2016-07-18 14 views
7

私はappcompat-v7 toolbarを使用していて、アイコン付きのメニューを追加しました。ツールバーの操作ボタンアイコンの色

マイmenu_items.xml

<item 
    android:id="@+id/quit" 
    android:title="Quit" 
    android:icon="@drawable/ic_power" 
    android:orderInCategory="700" 
    app:showAsAction="never"/> 
<item 
    android:id="@+id/app_settings" 
    android:orderInCategory="600" 
    android:icon="@drawable/ic_cog" 
    app:showAsAction="never" 
    android:title="Settings"/> 
<item 
    android:id="@+id/help" 
    android:orderInCategory="500" 
    android:title="Help" 
    android:icon="@drawable/ic_help" 
    app:showAsAction="always" /> 
<item 
    android:id="@+id/logout" 
    android:orderInCategory="400" 
    android:title="Logout" 
    android:icon="@drawable/ic_logout" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/tip" 
    android:orderInCategory="300" 
    android:title="Give Tip" 
    android:icon="@drawable/ic_coffee" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/withdraw" 
    android:orderInCategory="200" 
    android:title="Withdraw" 
    android:icon="@drawable/ic_bank" 
    app:showAsAction="ifRoom" /> 
<item 
    android:id="@+id/deposit" 
    android:orderInCategory="100" 
    android:title="Deposit" 
    android:icon="@drawable/ic_cash_multiple" 
    app:showAsAction="ifRoom" /> 

アイコンは、もともと黒ですが、私は

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 

を使用する場合、私はそれは、ツールバーの白として表示されるように期待していた代わりに、黒のアイコンが表示されます。 black icons

マイtoolbar.xml

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    android:background="?attr/colorPrimary"/> 

どのように私はアイコンが白く見えることができますか?

編集:

ツールバーに表示されるアイコンは、私が色を変更したいアイコンだけです。..ないオーバーフロー項目のアイコンを含むすべてのアイコン、... overflow items

+1

なぜdownvoteですか?私はここに掲示する前にこの質問に答えを見つけるために5時間だけ探しました.. –

+2

なぜあなたはアイコン画像を白くすることができませんか?それはずっと簡単です。 –

答えて

5

を手動で設定することができます

MenuItem favoriteItem = menu.findItem(R.id.action_favorite); 
Drawable newIcon = (Drawable)favoriteItem.getIcon(); 
newIcon.mutate().setColorFilter(Color.argb(255, 200, 200, 200), PorterDuff.Mode.SRC_IN); 
favoriteItem.setIcon(newIcon); 
:特定のアイコンのために、この

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 

     for(int i = 0; i < menu.size(); i++){ 
      Drawable drawable = menu.getItem(i).getIcon(); 
      if(drawable != null) { 
       drawable.mutate(); 
       drawable.setColorFilter(getResources().getColor(R.color.whiteColor), PorterDuff.Mode.SRC_ATOP); 
      } 
     } 

     return true; 
    } 

のような

オリエンテーションがランタイムを変更している場合は、条件を使用して方向を確認し、この状態でメニューカラーを設定できます。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 

     // here you can set menu item color if it landScape 

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();   
    } 
} 

か、あなたの画面を回転させたくない場合、あなたは、単にこのようなマニフェストファイルに設定することができます:

<activity android:name=".activities.MainActivity" 
      android:screenOrientation="portrait"> 

たり、特定の項目についてitemIconTintを使用することができます。このような

<item 
    android:id="@+id/quit" 
    android:title="Quit" 
    android:icon="@drawable/ic_power" 
    android:orderInCategory="700" 
    **app:itemIconTint="@color/black"** 
    app:showAsAction="never"/> 
<item 
    android:id="@+id/app_settings" 
    android:orderInCategory="600" 
    android:icon="@drawable/ic_cog" 
    app:showAsAction="never" 
    **app:itemIconTint="@color/black"** 
    android:title="Settings"/> 
+0

オーバーフローアイコンも変更されますか?私はオーバーフローメニューにアイコンがあります。 –

+0

はい..それは変わります、ちょうどこのコードをコピーし、あなたは知っているでしょう。 –

+0

私はそれを試しただけで、オーバーフローアイコンも変更されます。私は、表示されたアクションボタンのアイコンだけで色を変えたいが、オーバーフローしたメニューアイコンは変えないようにしたい。 –

0

あなたのメインテーマ

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 

    <item name="android:popupMenuStyle">@style/PopupMenu</item> 
    </style> 

ポップアップまたはメニュー項目のテーマも、あなたには、いくつかのより多くのポップアップの背景のようにしたい場合は、サイズとあなたがそうでなければ

<style name="PopupMenu" parent="android:Theme.Holo.Light"> 
    <item name="android:popupBackground">@android:color/white</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textSize">9sp</item> 


    <item name="textAppearanceLargePopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large</item> 
    <item name="textAppearanceSmallPopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small</item> 
    </style> 

色を削除したい場合は、追加することができますポップアップメニュー

<color name="white">#ffffffff</color> 
+0

popupMenuは大丈夫です..私は色を設定したいツールバーのアイコンのみ... –

関連する問題