2016-10-30 9 views
60

Material Design Libraryの新しい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> 

私は何か助けていただきありがとうございます。

答えて

155

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_checkedstate_selectedではありません。

+17

にそれを追加 私は動的メニューを生成するために必要な私の場合は – karenms

+1

この解決策は機能しませんでした。唯一の解決策は手動でメニュー項目を設定することでしたhttp://stackoverflow.com/a/7106111/2098878 –

+0

ありがとう、これは私のために働いた。 –

0

android:state_selectedではなく、android:state_enabledをセレクタアイテムの属性として使用してください。

+0

私はstate_enabledも試しましたが、これはこの特定のウィジェットで使用される正しい状態属性ではありません。問題は、答えに記載されたものでした:1.順序が間違っていた(デフォルト状態はセレクターの最後の項目でなければならない)。2. state_checkedは、BottomNavigationViewで使用される正しい状態属性である。 – Metallica

4
<android.support.design.widget.BottomNavigationView 
     android:id="@+id/navigation" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="0dp" 
     android:layout_marginStart="0dp" 
     app:itemBackground="@color/appcolor"//diffrent color 
     app:itemIconTint="@color/bnv_tab_item_foreground" //inside folder 2 diff colors 
     app:itemTextColor="@color/bnv_tab_item_foreground" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:menu="@menu/navigation" /> 

1. Inside res create folder with name color(like drawable) 
2. right click on color folder select new->colorresourcefile-> create color.xml(bnv_tab_item_foreground) file 
3. copy and paste it this(bnv_tab_item_foreground) 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:color="@color/white" /> 
    <item android:color="@android:color/darker_gray" /> 
</selector> 

its working fine no issues 
関連する問題