当前位置: 首页 > 知识库问答 >
问题:

显示/隐藏特定片段的底部导航视图

江棋
2023-03-14

在我的android应用程序中,当用户聚焦SearchView时,我希望底部的菜单栏消失(这也会弹出软键盘)。当SearchView失去焦点时,我想再次显示底部的导航栏。

我尝试过使用setViality(),视图确实隐藏或显示,但由于某种原因,它总是保留其高度。下面是我BottomNavigationView的代码:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    app:menu="@menu/bottom_navigation_menu"
    app:elevation="80dp"
    app:labelVisibilityMode="labeled"
    app:itemTextColor="@color/bottom_nav_color"
    app:itemIconTint="@color/bottom_nav_color"
    android:background="?attr/backgroundColor">

处理隐藏/显示导航栏的代码:

// Needed to close the SearchView when pressing back (instead of just losing focus)
mSearchView.setOnQueryTextFocusChangeListener(
    (v, hasFocus) -> {
        if (!hasFocus) {
            adapter.isSearchMode = false;
            bottomNavigationView.setVisibility(View.VISIBLE);
            searchMenuItem.collapseActionView();
            adapter.notifyDataSetChanged();
        } else {
            adapter.isSearchMode = true;
            bottomNavigationView.setVisibility(View.GONE);
            searchMenuItem.collapseActionView();
            adapter.notifyDataSetChanged();
        }
    });

BottomNavigationView由线性布局控制,如下所示:

<LinearLayout
                android:id="@+id/footer"
                android:baselineAligned="false"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:layout_alignParentBottom="true"
                android:orientation="vertical">

                <View
                    android:layout_width="match_parent"
                    android:layout_height="3dp"
                    android:background="@drawable/bottom_bar_top_shadow"/>

                <com.google.android.material.bottomnavigation.BottomNavigationView
                    android:id="@+id/bottom_navigation"
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    app:menu="@menu/bottom_navigation_menu"
                    app:elevation="80dp"
                    app:labelVisibilityMode="labeled"
                    app:itemTextColor="@color/bottom_nav_color"
                    app:itemIconTint="@color/bottom_nav_color"
                    android:background="?attr/backgroundColor">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:orientation="horizontal"
                        android:layout_marginTop="6dp"
                        android:weightSum="5"
                        android:elevation="16dp">

                        <RelativeLayout
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:gravity="center|top">

                            <TextView
                                android:id="@+id/missed_calls"
                                style="@style/unread_count_font"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@drawable/unread_message_count_bg"
                                android:layout_marginStart="20dp"
                                android:gravity="center"
                                android:visibility="gone"/>

                        </RelativeLayout>

                        <RelativeLayout
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:gravity="center|top">

                            <TextView
                                android:id="@+id/missed_chats"
                                style="@style/unread_count_font"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:background="@drawable/unread_message_count_bg"
                                android:layout_marginStart="20dp"
                                android:gravity="center"
                                android:visibility="gone"/>

                        </RelativeLayout>

                    </LinearLayout>

                </com.google.android.material.bottomnavigation.BottomNavigationView>


            </LinearLayout>

共有1个答案

淳于俊迈
2023-03-14

在底部导航中使用以下代码片段:

setVisibility(View.GONE)

看法Gone=没有剩余的查看空间。

 类似资料:
  • 我的应用程序有问题。我有一个底部导航视图,包含3个不同的片段,尽管目前只有主要的内容。当我试图从左侧的两个片段中的一个移动到主视图时,问题就出现了,即当底部导航视图被隐藏时。我附上了主代码。 PD:我有25.3.1版本的所有库(如果有用的话)。 感谢您的关注。 activity\u main。xml 主要活动。Java语言 我也给你添加了两张图片。 Ofertas片段 主片段

  • 我试图创建一个单一活动的Android应用程序。我有带有BottomNavigationView的MainActivity (only activity),三个顶级片段和一些子片段。我的要求是,每当屏幕显示顶级片段,底部导航应该是可见的,这样切换是可能的。但是当我查看任何子片段时,底部导航应该是隐藏的。是否有任何现成的方式使用导航组件或需要手动更改可见性?

  • 我必须在向上滚动时隐藏底部导航视图,在向下滚动时显示。如何实现这个?我的布局是这样的 我附上了视图截图。请检查一下。

  • 我正在尝试实现BottomNavigationView,到目前为止很成功。目前正在尝试实现片段到片段的移动,这也很成功,但不知何故,当我从一个片段[广播]移动到另一个[流]时,导航栏应该突出显示图标[流],但它没有发生我可以通过片段本身设置突出显示属性吗?下面是我的应用程序的代码和快照: 主要活动。Java语言 放射性碎片。Java语言 StreamFragment。Java语言

  • 我的主要活动中有一个底部导航栏。通过单击底部导航中的一个选项卡,我想更改视图中的片段。我有以下代码:主要活动: } 我的一个片段: 如果我单击其中一个选项卡,就会显示正确的片段,因此这是可行的。然而,当新片段出现时,我想单击另一个选项卡来显示另一个片段,这就行不通了。底部导航栏不会对单击做出反应。甚至日志。i语句不起作用,因此似乎没有调用导航项SelectedListener。 我对android

  • 我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一