Android 更改所选选项卡时显示底部导航视图(隐藏底部视图上的滚动行为)
我有一个BottomNavigationView,如果向上滚动,它会在隐藏状态下向下滚动。现在,如果我按下back键,前面的片段没有任何滚动,我的BottomNavigationView仍然隐藏,有没有办法强制它可见Android 更改所选选项卡时显示底部导航视图(隐藏底部视图上的滚动行为),android,Android,我有一个BottomNavigationView,如果向上滚动,它会在隐藏状态下向下滚动。现在,如果我按下back键,前面的片段没有任何滚动,我的BottomNavigationView仍然隐藏,有没有办法强制它可见 <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/my_nav_bar" android:layout_width="match_parent
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/my_nav_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
app:labelVisibilityMode="labeled"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
app:menu="@menu/navigation" />
如果您还没有弄明白,或者其他人也有同样的问题,我就是这样设法解决的: 在具有底部导航视图并承载片段的活动中,添加以下方法:
private fun forceShowNavBar() {
if (my_nav_bar.translationY != 0f) {
val layoutParams = my_nav_bar.layoutParams as CoordinatorLayout.LayoutParams
val behavior = layoutParams.behavior as HideBottomViewOnScrollBehavior
behavior.onNestedScroll(main_container, bottom_navigation_view, frag_ct, 0, -1, 0, 0, 0)
}
}
如果不清楚在onNestedScroll
中应该包含哪些参数,您可以阅读文档
然后,用以下内容覆盖您的onBackPressed
方法:
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount > 0) {
resetScreenState()
}
super.onBackPressed()
}
在
super.onBackPressed()
之前调用方法很重要,否则底部导航栏将不会显示。如果您还没有弄清楚,或者其他人也有同样的问题,我就是这样解决的:
在具有底部导航视图并承载片段的活动中,添加以下方法:
private fun forceShowNavBar() {
if (my_nav_bar.translationY != 0f) {
val layoutParams = my_nav_bar.layoutParams as CoordinatorLayout.LayoutParams
val behavior = layoutParams.behavior as HideBottomViewOnScrollBehavior
behavior.onNestedScroll(main_container, bottom_navigation_view, frag_ct, 0, -1, 0, 0, 0)
}
}
如果不清楚在onNestedScroll
中应该包含哪些参数,您可以阅读文档
然后,用以下内容覆盖您的onBackPressed
方法:
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount > 0) {
resetScreenState()
}
super.onBackPressed()
}
在super.onBackPressed()
之前调用方法非常重要,否则将不会显示底部导航栏