67

是否可以更改操作栏上溢出按钮(3 个垂直点)的颜色?如果是这样,我们该怎么做?我没有找到溢出按钮的任何样式。

谢谢

4

13 回答 13

72

您可以使用以下样式声明更改用于它的图像。

<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>
于 2012-07-11T07:51:34.873 回答
38

其中一些答案是严重的矫枉过正,有些给出的结果有限。答案要简单得多。您可以随时将其设置为您想要的任何颜色。这里:

toolbar.getOverflowIcon().setColorFilter(colorInt, PorterDuff.Mode.SRC_ATOP);
于 2018-08-18T12:53:54.967 回答
20

XGouchet 的答案很棒,但只是想补充一点,如果您从现有样式继承,您将获得标准填充、选定状态等。

<style name="MyCustomTheme.OverFlow" parent="Widget.Sherlock.ActionButton.Overflow">
    <item name="android:src">@drawable/title_moreicon</item>
</style>
于 2013-03-05T18:27:46.530 回答
11

其他编程选项:

        Drawable drawable = toolbar.getOverflowIcon();
        if(drawable != null) {
            drawable = DrawableCompat.wrap(drawable);
            DrawableCompat.setTint(drawable.mutate(), getResources().getColor(R.color.thecolor));
            toolbar.setOverflowIcon(drawable);
        }

希望能帮助到你!

于 2017-05-10T08:43:30.593 回答
10

如果您使用 AppCompat ,您可以派生一个新的自定义样式,并将属性android:textColorSecondary设置为所需的颜色,并将其用作工具栏的主题。 Android:更改工具栏的文本颜色和溢出图标颜色

于 2015-09-28T14:06:34.050 回答
3

放置图像不是一个好主意,因为如果您只能通过更改颜色来更改它,则无需使用额外的图像。<item name="android:textColorPrimary">@android:color/white</item>菜单点从 textColorPrimary 中选择颜色,因此这一行将解决您的问题,而不是编写多行 。唯一的一个小问题是这种颜色也将应用于溢出菜单的文本颜色,当然还有很多其他地方:)

于 2015-10-08T12:59:20.910 回答
2

如果您使用的是最新的 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>
于 2017-08-31T21:37:26.063 回答
1
<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+ 设备。

参考:自定义 AppCompat 主题不会更改旧设备上的溢出图标

于 2017-06-12T11:44:43.290 回答
1

只需在 style.xma 文件中以您选择的样式添加此行

<item name="colorControlNormal">@color/white</item>

它工作正常。如果你使用

<item name="textColorSecondary">@color/white</item>

那么您的其他项目(如抽屉导航菜单图标颜色和单选按钮)将受到影响

于 2018-02-12T17:43:11.203 回答
1

要将溢出图标颜色更改为您选择的颜色.....使用它们

 <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>
于 2019-11-22T09:36:20.307 回答
0
@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;
    }

它对我有用,我从这里找到了它

于 2018-06-13T19:19:52.850 回答
0

对于溢出图标颜色更改,您只需添加

toolbar.setOverflowicon(getDrawable)
于 2019-01-28T08:46:02.390 回答
0

如果您只想将 3 点图标变为白色而不是黑色,您只需将工具栏的主题更改为:

 <android.support.v7.widget.Toolbar
     ...
     android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"
 />

完整参考: medium.com/the-curious-case-of-the-overflow-icon-color

于 2019-03-01T10:03:19.440 回答