Android 工具栏操作按钮图标颜色

Android 工具栏操作按钮图标颜色,android,android-toolbar,aide-ide,Android,Android Toolbar,Aide Ide,我正在使用appcompat-v7工具栏,并添加了一些带有图标的菜单 我的菜单项.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_sett

我正在使用appcompat-v7工具栏,并添加了一些带有图标的菜单

我的
菜单项.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" />
相反,它显示黑色图标。

mytoolbar.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"/>

您可以这样手动设置

 @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">
或者,如果您不想旋转屏幕,只需在清单文件中设置如下:

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

或者,您可以对特定项目使用ItemIContent:

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

你的主题

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

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@样式/弹出菜单
弹出式菜单或菜单项主题,如果您想要一些更像弹出式菜单背景、大小和弹出式菜单的主题,您可以添加,如果您想要删除


@android:彩色/白色
@颜色/白色
9便士
@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large
@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small
颜色

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

这是否也会改变溢出图标?因为我在溢出菜单上有图标。是的。。它会改变的,只需复制此代码。。你会知道的。我刚刚试过,它也改变了溢出图标。。我只希望显示的操作按钮图标可以更改颜色,但不希望溢出菜单图标。然后,您可以在for loop中选择相应的图标,并将drawable设置为该图标。。这是一个简单的解决办法我希望你能明白。。是的,如果我的回答有帮助,请批准我的回答。为什么要投反对票?我搜索了5个小时,只是为了在这里发布之前找到这个问题的答案。为什么你不能把图标图像变成白色?它简单多了。你有没有非编程的解决方案?弹出菜单没问题。。只有工具栏上我想要设置颜色的图标。。。
  <color name="white">#ffffffff</color>