2017-01-05 28 views
4

以下は現在のBottomNavigationViewのXMLです。現在、3つのアイコンドロワブルはすべて、同じ色の塗りつぶされていないアイコンです。私はその状態が選択されたときに塗りつぶされたバージョンのアイコンを表示することができ、現在のアイコン状態であることを明白にするために色を変更することができるようにしたい。次のイメージは、私が意味するものの例です。AndroidのBottomNavigationViewの選択状態に異なるアイコン/色を使用する方法はありますか?

Example of icon color changing for selected state

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_favorites" 
     android:enabled="true" 
     android:icon="@drawable/icon_flyer" 
     android:title="Flyer" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/action_schedules" 
     android:enabled="true" 
     android:icon="@drawable/icon_list" 
     android:title="List" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/action_music" 
     android:enabled="true" 
     android:icon="@drawable/icon_contact" 
     android:title="Contact" 
     app:showAsAction="ifRoom" /> 
</menu> 

答えて

1

あなたのメニュー項目にStateDrawableを設定することができます。 は、次のコードを使用して描画可能なフォルダ内のXMLファイルを作成します:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_pressed_green" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_normal" /> 
</selector> 

更新、それはあなたのニーズ(状態および描画可能)に適合したXMLファイルとメニュー項目の代わりに、あなたの現在のアイコンでそれを参照します。

4

状態によってアイコンの色を変更するには、BottomNavigationViewの「itemIconTint」プロパティの色状態ドロワブルを設定します。テキストカラーの場合、 "itemTextColor"プロパティで同じカラー状態のドロウアブルを設定できます。ここでBottomNavigationViewのための色の状態のドロウアブルの例である:

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

「アンドロイド:state_pressed」状態は、メニュー項目の押された状態です。 "android:state_checked"は、メニュー項目の選択状態です。

これは、BottomNavigationViewのアイコンとラベルの色のみを変更します。あなたのアイコンを塗りつぶすために、あなたのメニュー項目の "アイコン"プロパティのアイコン状態drawableを設定することができます。アイコン状のドロウアブルの例を次に示します。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/ic_favorites_filled" android:state_checked="true" /> 
    <item android:drawable="@drawable/ic_favorites" /> 
</selector> 
関連する問題