使用appcompat v21更改actionOverflowButtonStyle

8

我想要更改我的Toolbar(或者ActionBar)中的溢出菜单图标。

我采用以下步骤:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>
</style>

<style name="AppTheme.OverflowButtonStyle" parent="Widget.AppCompat.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_custom</item>
</style>

或者这种方式:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item>
</style>

<style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
    <item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>
</style>

<style name="AppTheme.OverflowButtonStyle" parent="Widget.AppCompat.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_custom</item>
</style>

但是这两种方式都不起作用。那里有问题吗?
第二个问题是,我能否从库中更改一个资源到另一个资源(我只想将黑色操作溢出按钮更改为白色,该按钮也显示在库中)?
1个回答

25

使用actionOverflowButtonStyle属性可以在应用主题中定义溢出图标。

使用材料组件主题(Material Components Theme)

<style name="AppTheme.Base" parent="Theme.MaterialComponents.DayNight">
    <item name="actionOverflowButtonStyle">@style/OverFlow</item>
</style>

<style name="OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
    <item name="srcCompat">@drawable/my_overflow_menu</item>
</style>

使用 AppCompat 主题:

<style name="AppTheme" parent="Theme.AppCompat.Light">  
   <item name="actionOverflowButtonStyle">@style/OverFlow</item>
</style>

<style name="OverFlow" parent="Widget.AppCompat.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_myoverflow</item>
</style>

使用appcompat时,必须使用不带android命名空间的属性。


谢谢!它有效。我们需要使用两次吗?我的意思是 <item name="actionOverflowButtonStyle">@style/OverFlow</item><item name="android:actionOverflowButtonStyle">@style/OverFlow</item>。另外,从库中使用资源是否可行?我找不到两个溢出按钮的变体。但库中包含黑色和白色,对吧? - Anton Holovin
您还可以在新的图标集中找到该图标:http://www.google.com/design/spec/resources/sticker-sheets.html#sticker-sheets-components。如果这个答案对其他用户有用,请查看答案。 - Gabriele Mariotti
5
我正在使用parent="@style/Theme.AppCompat.Light.DarkActionBar"的主题,但覆盖Overflow按钮没有效果:( - To Kra
2
"没有使用 Android 命名空间,这对我起了作用!" - Elyakim Levi
你能只改变颜色而不是图标吗? - lostintranslation
2
你可以通过应用一个色调来更改颜色: - soniiic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接