我有一个BottomNavigationView,如果向上滚动,它会处于隐藏状态。现在,如果我按回去并且上一个片段没有任何滚动,则我的BottomNavigationView仍处于隐藏状态,是否有办法强制其可见?
<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" />
答案 0 :(得分:1)
如果您还没有弄清楚它,或者如果其他任何人遇到相同的问题,这就是我设法解决的方法:
在具有底部导航视图并托管片段的活动中,添加以下方法:
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
中应包含哪些参数,则可以阅读文档here
然后,使用以下命令覆盖onBackPressed
方法:
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount > 0) {
resetScreenState()
}
super.onBackPressed()
}
在之前 super.onBackPressed()
之前调用方法很重要,否则底部导航栏将不会显示。