启用自动隐藏/显示时,BottomNavigationView不会显示



我有一个单独的Activity,它的布局中有一个BottomNavigationView

<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
app:menu="@menu/menu_home_bottom_navigation"
/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

我的bottom_avigation用片段改变了nav_hostFragmentContainerView。所有这些片段都有NestedScrollViewRecyclerView,因为有了app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior",我的bottom_navigation会在scrollDown/scrollUp上自动隐藏/显示。

我看到了这个问题:隐藏/显示底部导航滚动视图。我目前使用的是阿布谢克·辛格给出的答案,但问题不在于此。

这就是我的问题:想象一下FragAFragB都有RecyclerViews,但FragA的项目较少,导致所有项目都适合屏幕,无法滚动。现在,当我从FragA切换到FragB,然后向下滚动时,bottom_navigation会随着动画而隐藏,如果我按下后退按钮,我将无法再看到bottom_navigation,并且由于FragA不可滚动,我无法通过滚动使其可见。

我也在FragAonResume事件中尝试过bottom_navigation.visibility = View.Visible,但仍然不起作用。我认为它以某种方式将bottom_navigation翻译到了底部,因此这段代码没有帮助。

那么我该如何解决这个问题呢?

由于您的代码中没有任何部分,我的解决方案是在后退按钮上侦听:

也许你可以看看这篇文章,它会对有所帮助

安卓系统:onBackPressed((用于碎片

然后更改BottomNavigationView的可见性。

我找到了答案。我没有更改bottom_navigationvisibility属性,而是在BottomNavigationView上编写了两个扩展函数来隐藏/显示它:
private fun BottomNavigationView.showUp() {
animate().setDuration(200L).translationY(0f).withStartAction { visibility = View.VISIBLE }.start()
}
private fun BottomNavigationView.hideDown() {
animate().setDuration(200L).translationY(height.toFloat()).withEndAction { visibility = View.GONE }.start()
}

现在在FragAonResume中,我有这个:

override onResume() {
super.onResume()
bottom_navigation.showUp()
}

相关内容

  • 没有找到相关文章

最新更新