2016-01-10 13 views
6

ナビゲーション・ドロワーを作成していましたが、プレイ・トーアが色付きのメニュー・アイコンを表示していました。 どうすればいいのか知りたいです。 これは、すべてのアイコンをブラシに私のコードナビゲーション用のメニュー項目に色をつける方法は?

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<group 
    android:id="@+id/grp1" 
    android:checkableBehavior="single"> 
    <item 
     android:id="@+id/navigation_songs" 
     android:checked="true" 
     android:icon="@drawable/ic_audiotrack_white_24dp" 
     android:title="@string/songs" /> 
    <item 
     android:id="@+id/navigation_albums" 
     android:icon="@drawable/ic_album_white_24dp" 
     android:title="@string/albums" /> 
    <item 
     android:id="@+id/navigation_artist" 
     android:icon="@drawable/ic_person_white_24dp" 
     android:title="@string/artists" /> 
    <item 
     android:id="@+id/navigation_playlist" 
     android:icon="@drawable/ic_playlist_play_white_24dp" 
     android:title="@string/playlist" /> 
</group> 
<group 
    android:id="@+id/grp2" 
    android:checkableBehavior="none"> 
    <item 
     android:id="@+id/navigation_about" 
     android:icon="@drawable/ic_info_white_24dp" 
     android:title="@string/about" /> 
    <item 
     android:id="@+id/navigation_settings" 
     android:icon="@drawable/ic_settings_white_24dp" 
     android:title="@string/settings" /> 
</group> 
</menu> 

答えて

10
  1. である私は、メニューアイコンの上にカラーフィルターによって色を適用しようとしたが、アプリの力が

    My app

    what i wanted

    を閉じ into particu LAR色、あなたのNavigationViewapp:itemIconTintを追加する必要があります。

    <android.support.design.widget.NavigationView 
        ........ 
        app:itemIconTint="<your color>"/> 
    

    enter image description here

  2. あなたのアイコンのみ2色でをブラシに:

    セレクタを作成します。

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
        <item android:color="#0000FF" android:state_checked= "true" /> 
        <item android:color="#FF0000" /> 
    </selector> 
    

    そして、Yにapp:itemIconTintとしてそれを適用してください私たちのNavigationView

    <android.support.design.widget.NavigationView 
        ........ 
        app:itemIconTint="@drawable/tint_color_selector"/> 
    

    最終ステップ - あなたが別のブラシにしたいあなたの引き出しのメニューXMLでMenuItemsandroid:checked="true"を追加する:異なるにすべてのアイコンをブラシに

    <item 
        android:id="@+id/nav_slideshow" 
        android:checked="true" 
        android:icon="@drawable/ic_menu_slideshow" 
        android:title="Slideshow" /> 
    

    enter image description here

  3. GoogleがGoogle Playにあるようなの色:

    あなたのアイコンの3210

    無効に着色:

    navigationView.setItemIconTintList(null); 
    

    res/drawableにしたいアイコンを追加し、メニューのXMLでandroid:iconとしてそれらを指定します。代わりに新しいカラフルなアイコンをアップロードするのは、既存のものを描くことができますが、それは非常にハックです

    enter image description here

    (私はアンドロイドのアイコンicons8.com/web-app/new-icons/androidのための素晴らしいサービスをお勧めすることができます):

    Drawable oldIcon = navigationView 
          .getMenu() 
          .findItem(R.id.nav_gallery) 
          .getIcon(); 
    
        if (!(oldIcon instanceof BitmapDrawable)) { 
         return; 
        } 
    
        Bitmap immutable = ((BitmapDrawable)oldIcon).getBitmap(); 
        Bitmap mutable = immutable.copy(Bitmap.Config.ARGB_8888, true); 
        Canvas c = new Canvas(mutable); 
        Paint p = new Paint(); 
        p.setColor(Color.RED); 
        p.setColorFilter(new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY)); 
        c.drawBitmap(mutable, 0.f, 0.f, p); 
        BitmapDrawable newIcon = new BitmapDrawable(getResources(), mutable); 
    
        navigationView 
          .getMenu() 
          .findItem(R.id.nav_gallery) 
          .setIcon(newIcon); 
    

    を付けろ!テンプレートプロジェクトのres/drawables-v21では、GoogleはBitmapDrawablesではなくVectorDrawableを使用しているため、このコードは機能しません。

私は願っています。

+0

こんにちは私はサブヘッダのテキストの色を(通信)のように変更できますか?私は周りを検索しますが、見つけることができません。いくつかのカスタム変更を提供してください。 –

+0

ニース!私が見た最善の説明。テーマに応じてアイコンの色を設定できますか? –

+0

完璧なソリューション –