我需要创建一个自定义底部导航视图。情况是当我单击任何项目时,标签消失,只显示图标。示例图像是
我正在尝试使用类似的选择器创建自定义
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tested"
android:icon="@drawable/selector_nav_tested"
android:title="tested"/>
</menu>
但它只是改变了图标。如果我使用
labelVisibilityMode = LABEL_VISIBILITY_UNLABELED
,则标签不会显示在任何导航项上。有没有办法通过在其 setOnNavigationItemSelectedListener
中添加代码来自定义它,或者我需要使用库吗?
这是默认完成的。您可以使用
覆盖它app:labelVisibilityMode="labeled"
在您的 BottomNavigationView 上,它应该强制覆盖它以显示所有标签。
app:labelVisibilityMode="auto"
app:labelVisibilityMode="labeled"
app:labelVisibilityMode="unlabeled"
以上三点是要保留的要点。.auto是点击后隐藏..labeled是一直有标签,unlabeled是没有标签。
希望这有帮助。
labelVisibilityMode 属性可用于调整每个导航项的 text 标签的行为。有四种可见模式:
LABEL_VISIBILITY_AUTO(默认):当有 3 个或更少的项目时,标签表现为“已标记”,或者当有 4 个或更多项目时,标签表现为“已选择”
LABEL_VISIBILITY_SELECTED:标签仅显示在选定的导航项上
LABEL_VISIBILITY_LABELED:标签显示在所有导航项上
LABEL_VISIBILITY_UNLABELED:所有导航项的标签均隐藏
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
**app:labelVisibilityMode="unlabeled"**
app:menu="@menu/bottom_navigation_menu" />
试试这个
生成可绘制对象,例如 tab_item_foreground.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@android:color/transparent" />
<item android:color="@android:color/darker_gray" />
然后这样使用。
app:itemTextColor="@drawable/bnv_tab_item_foreground"
对于图标的圆角背景试试这个。
app:itemActiveIndicatorStyle="@style/App.Custom.Indicator"
而且风格应该是这样的。
<style name="App.Custom.Indicator" parent="Widget.Material3.BottomNavigationView.ActiveIndicator">
<item name="android:color">@color/primary</item>
<item name="android:width">@dimen/_50dp</item>
<item name="android:height">@dimen/_50dp</item>
</style>