更改选定的选项卡时显示BottomNavigationView(hide_bottom_view_on_scroll_behavior)

时间:2019-01-15 20:08:55

标签: android

我有一个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" />

1 个答案:

答案 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()之前调用方法很重要,否则底部导航栏将不会显示。