底部导航视图中选定选项卡的颜色

新手上路,请多包涵

我正在向项目添加 BottomNavigationView ,并且我希望为选定的选项卡设置不同的文本(和图标色调)颜色(以实现使未选定选项卡变灰的效果)。在颜色选择器资源文件中使用带有 android:state_selected="true" 的不同颜色似乎不起作用。我还尝试使用 android:state_focused="true"android:state_enabled="true" 增加项目条目,不幸的是没有效果。还尝试将默认(未选择)颜色的 state_selected 属性设置为 false(明确),但没有运气。

这是我将视图添加到布局的方法:

 <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/silver"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground"
        app:menu="@menu/bottom_nav_bar_menu" />

这是我的颜色选择器( bnv_tab_item_foreground.xml ):

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/darker_gray"  />
    <item android:state_selected="true" android:color="@android:color/holo_blue_dark" />
</selector>

还有我的菜单资源( bottom_nav_bar_menu.xml ):

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/action_home"
        android:icon="@drawable/ic_local_taxi_black_24dp"
        android:title="@string/home" />
    <item
        android:id="@+id/action_rides"
        android:icon="@drawable/ic_local_airport_black_24dp"
        android:title="@string/rides"/>
    <item
        android:id="@+id/action_cafes"
        android:icon="@drawable/ic_local_cafe_black_24dp"
        android:title="@string/cafes"/>
    <item
        android:id="@+id/action_hotels"
        android:icon="@drawable/ic_local_hotel_black_24dp"
        android:title="@string/hotels"/>

</menu>

我将不胜感激任何帮助。

原文由 Javad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
2 个回答

在制作 selector 时,始终保持最后的默认状态,否则只会使用默认状态。您需要将选择器中的项目重新排序为:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@android:color/holo_blue_dark" />
    <item android:color="@android:color/darker_gray"  />
</selector>

BottomNavigationBar 一起使用的状态是 state_checked 不是 state_selected

原文由 Kamran Ahmed 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于文件夹结构发生了变化,tab_color.xml 现在属于 res > drawable,它可以处理选择器。从那里开始,公认的解决方案有效。

原文由 Benedict Lang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题