我正在向项目添加 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 许可协议
在制作
selector
时,始终保持最后的默认状态,否则只会使用默认状态。您需要将选择器中的项目重新排序为:与
BottomNavigationBar
一起使用的状态是state_checked
不是state_selected
。