是否可以更改操作栏上溢出按钮(3 个垂直点)的颜色?如果是这样,我们该怎么做?我没有找到溢出按钮的任何样式。
谢谢
您可以使用以下样式声明更改用于它的图像。
<style name="MyCustomTheme" parent="style/Theme.Holo">
<item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>
<style name="MyCustomTheme.OverFlow">
<item name="android:src">@drawable/my_overflow_image</item>
</style>
如果您使用的是 ActionBarSherlock,请按以下步骤操作
<style name="MyCustomTheme" parent="style/Theme.Sherlock">
<item name="android:actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
<item name="actionOverflowButtonStyle">@style/MyCustomTheme.OverFlow</item>
</style>
<style name="MyCustomTheme.OverFlow">
<item name="android:src">@drawable/my_overflow_image</item>
</style>
其中一些答案是严重的矫枉过正,有些给出的结果有限。答案要简单得多。您可以随时将其设置为您想要的任何颜色。这里:
toolbar.getOverflowIcon().setColorFilter(colorInt, PorterDuff.Mode.SRC_ATOP);
XGouchet 的答案很棒,但只是想补充一点,如果您从现有样式继承,您将获得标准填充、选定状态等。
<style name="MyCustomTheme.OverFlow" parent="Widget.Sherlock.ActionButton.Overflow">
<item name="android:src">@drawable/title_moreicon</item>
</style>
其他编程选项:
Drawable drawable = toolbar.getOverflowIcon();
if(drawable != null) {
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.thecolor));
toolbar.setOverflowIcon(drawable);
}
希望能帮助到你!
如果您使用 AppCompat ,您可以派生一个新的自定义样式,并将属性android:textColorSecondary
设置为所需的颜色,并将其用作工具栏的主题。
Android:更改工具栏的文本颜色和溢出图标颜色
放置图像不是一个好主意,因为如果您只能通过更改颜色来更改它,则无需使用额外的图像。<item name="android:textColorPrimary">@android:color/white</item>
菜单点从 textColorPrimary 中选择颜色,因此这一行将解决您的问题,而不是编写多行
。唯一的一个小问题是这种颜色也将应用于溢出菜单的文本颜色,当然还有很多其他地方:)
如果您使用的是最新的 Toolbar,则必须将语句放在 styles.xml 中,如下代码所示:
<style name="AppToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/black</item>
</style>
<style name="MyCustomTheme" parent="@style/Theme.AppCompat.Light">
<item name="actionOverflowButtonStyle">@style/OverflowMenuButtonStyle</item>
</style>
<style name="OverflowMenuButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
<item name="android:src">@drawable/quantum_ic_more_vert_white_24</item>
</style>
请注意,这与 XGouchet 通过删除 android 命名空间的答案不同。XGouchet 的答案仅适用于 Lollipop 和更高版本的设备,而我的适用于所有 API 7+ 设备。
只需在 style.xma 文件中以您选择的样式添加此行
<item name="colorControlNormal">@color/white</item>
它工作正常。如果你使用
<item name="textColorSecondary">@color/white</item>
那么您的其他项目(如抽屉导航菜单图标颜色和单选按钮)将受到影响
要将溢出图标颜色更改为您选择的颜色.....使用它们
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="actionOverflowButtonStyle">@style/actionButtonOverflow</item>
</style>
<style name="actionButtonOverflow" parent="Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:tint">@color/primary_dark</item>
</style>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.dashboard, menu); // dashboard is xml file name
Drawable drawable = menu.findItem(R.id.lan).getIcon();
if (drawable != null) {
drawable.mutate();
drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
}
return true;
}
它对我有用,我从这里找到了它
对于溢出图标颜色更改,您只需添加
toolbar.setOverflowicon(getDrawable)
如果您只想将 3 点图标变为白色而不是黑色,您只需将工具栏的主题更改为:
<android.support.v7.widget.Toolbar
...
android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"
/>
完整参考: medium.com/the-curious-case-of-the-overflow-icon-color