2016-07-18 6 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"/> 

Как я могу сделать значки появляются белые?

Edit:

Значки, отображаемые на панели инструментов являются только иконки я хочу изменить цвет .. Не все иконы, в том числе значок переполненном элемента ... overflow items

+1

Почему downvote? Я искал 5 часов, чтобы найти ответ на этот вопрос, прежде чем размещать здесь. –

+2

Почему вы не можете просто сделать изображения значков белыми? Это намного проще. –

ответ

5

можно установить вручную как этот

@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; 
    } 

для отдельного значка:

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 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

Изменится ли иконка переполнения? Coz У меня есть значки в меню переполнения. –

+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> 

PopUp или меню тема пункт также, если вы хотите, чтобы некоторые больше похожи на фоне всплывающего, размера и POPUPMENU вы можете добавить, если вы хотите, в противном случае удалить

<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 в порядке .. Только значки на панели инструментов, которые я хочу установить цвет ... –

Смежные вопросы