启用自动隐藏/显示后,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_host FragmentContainerView。所有这些片段都具有nestedScrollViewRecyclerView,并且由于app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior",我的bottom_navigation会在scrollDown / scrollUp上自动隐藏/显示

我看到了这个问题:Hide/Show bottomNavigationView on Scroll 。我目前正在使用 Abhishek Singh 给出的答案,但问题不在于此。

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

我还在bottom_navigation.visibility = View.Visible FragA事件中尝试过onResume,但仍然无法正常工作。我认为它以某种方式将bottom_navigation转换为底部,因此该代码无济于事。

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

解决方法

由于您的代码中没有任何内容,因此我的解决方案是监听后退按钮:

也许您可以查看这篇文章会有所帮助

Android: onBackPressed() for Fragments

然后更改BottomNavigationView的可见性。

,

我找到了答案。我没有更改visibility的{​​{1}}属性,而是在bottom_navigation上写了两个扩展函数来隐藏/显示它:

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() } 的{​​{1}}中,我有这个:

onResume

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...