更改工具栏溢出图标的颜色

我的Android应用程序中有一个android.support.v7.widget工具栏。 这个背景颜色是明亮的橙色,最上面的颜色是白色而不是黑色。

我有黑色的默认颜色,而不是白色。 由于它会与其他东西冲突,这是几乎不可能覆盖。 我不能将主文本颜色更改为白色!

我已经设法改变标题颜色。 我现在正在寻找的是如何改变动作button颜色(以白色)。

在这里输入图像说明

谢谢

编辑:现在包括代码

主要活动:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".UI.activities.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/r2_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" app:titleTextColor="@color/primary_text_material_light" app:subtitleTextColor="@color/primary_text_material_light" android:theme="@style/R2Theme.Toolbar"/> <fragment android:name="com.r2retail.r2retailapp.UI.fragments.SetupFragment" android:layout_below="@+id/r2_toolbar" android:id="@+id/list" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> 

菜单栏:

 <?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/about" android:icon="@drawable/ic_menu" android:title="About" app:showAsAction="never"/> </menu> 

样式:

 <resources> <style name="R2Theme" parent="Theme.AppCompat.Light.NoActionBar">= <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:textColorPrimary">@color/secondary_text_material_dark</item> <item name="android:textColorSecondaryInverse">@color/primary_text_material_light</item> </style> <style name="R2Theme.Toolbar" parent="R2Theme"> <item name="actionMenuTextColor">@color/primary_text_material_light</item> </style> </resources> 

Solutions Collecting From Web of "更改工具栏溢出图标的颜色"

样式:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item> </style> <style name="MyOverflowButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow"> <item name="android:tint">#62ff00</item> </style> 

结果:

在这里输入图像说明

解决scheme是replace图标本身。

1

转到valuse / styles并在styles.xml文件中添加:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> </style> <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.Light.ActionButton.Overflow"> <!--Here you need to put name of drawable you will create during the next step--> <item name="android:src">@drawable/your_white_icon</item> </style> 

第2

然后旅行到可绘制的文件夹。 用鼠标右键单击 – >新build – >vector资产。 然后按图标图像,并从名为ic_more_vert_black_24dp的build议图标中select。

自定义 – >按下一步 – >完成。

然后打开新创build的图标文件。 代码看起来像这样。

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#FFFFFFFF" <!-- Here u can change color--> android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/> </vector> 

fillColor属性更改为所需的颜色。 把这个文件放在第一步中描述的样式。

瞧! 我们的三个点的颜色变化不取决于基本的应用程序样式(#FF2012颜色的结果)。

在这里输入图像说明

另一种方法,用代码而不是XML:

 public static boolean colorizeToolbarOverflowButton(@NonNull Toolbar toolbar, @ColorInt int color) { final Drawable overflowIcon = toolbar.getOverflowIcon(); if (overflowIcon == null) return false; toolbar.setOverflowIcon(getTintedDrawable(toolbar.getContext(), overflowIcon, toolbarIconsColor)); return true; } public static Drawable getTintedDrawable(@NonNull Context context, @NonNull Drawable inputDrawable, @ColorInt int color) { Drawable wrapDrawable = DrawableCompat.wrap(inputDrawable); DrawableCompat.setTint(wrapDrawable, color); DrawableCompat.setTintMode(wrapDrawable, Mode.SRC_IN); return wrapDrawable; } 

如果成功着色溢出图标,该函数将返回true。

另一种select,如果你不喜欢使用有色绘图:

 public static boolean colorizeToolbarOverflowButton(@NonNull Toolbar toolbar, @ColorInt Integer color) { final Drawable overflowIcon = toolbar.getOverflowIcon(); if (overflowIcon == null) return false; final PorterDuffColorFilter colorFilter = toolbarIconsColor == null ? null : new PorterDuffColorFilter(toolbarIconsColor, PorterDuff.Mode.MULTIPLY); overflowIcon.setColorFilter(colorFilter); return true; }