我正在向BottomNavigationView项目中添加一个,并且我希望为选定的选项卡设置不同的文本(和图标色调)颜色(以实现使非选定选项卡变灰的效果)。在颜色选择器资源文件中使用不同android:state_selected="true"的颜色似乎不起作用。我还尝试使用android:state_focused="true"or来添加额外的项目条目,android:state_enabled="true"不幸的是没有效果。还尝试将state_selected默认(未选择)颜色的属性设置为 false(显式),但没有运气。
BottomNavigationView
android:state_selected="true"
android:state_focused="true"
android:state_enabled="true"
state_selected
这是我将视图添加到布局的方法:
<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):
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):
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>
我将不胜感激任何帮助。
在制作 aselector时,始终保持最后的默认状态,否则只会使用默认状态。您需要将选择器中的项目重新排序为:
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>
并且要使用的状态BottomNavigationBaris state_checkednot state_selected。
BottomNavigationBar
state_checked