android - 底部导航 View 中选定选项卡的颜色

标签 android material-design navigationbar

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

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

<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>

我将不胜感激。

最佳答案

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

<?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

关于android - 底部导航 View 中选定选项卡的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325422/

相关文章:

android - 将 "uniform sampler2D"传递给 libgdx 中的 glsl 着色器(使用 modelBatch)

android - Mvvmcross 加载指示器未显示

java - 在 View 寻呼机中加载网页 View 的时间太多

javascript - Angular Watch 不会因值变化而触发

android - 保存绘图

java - 在 Android 中以编程方式更改 AppBarLayout 高度

flutter - Flutter 的深色模式颜色

ios - 如何正确设置导航栏中图像的约束?

html - 当高度 = 100% 时,div 的 CSS/HTML 背景颜色未到达页面底部?

android - 导航栏颜色不变