更改操作栏中的溢出图标


Answers:


255

您可以使用样式,但是必须将其添加到主Theme声明中。

<resources>
    <!-- Base application theme. -->
    <style name="Your.Theme" parent="@android:style/Theme.Holo">
        <!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
        <item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
    </style>

    <!-- Styles -->
    <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_action_overflow</item>
    </style>

</resources>

您还可以动态更改它,我在这里详细介绍:

以编程方式更改Android Overflow菜单图标


1
我已经在源代码中找到了这个解决方案,但是谢谢:)这是一个很好的答案。
pjanecze 2012年

6
请注意,这是应用于主题,而不是样式。让我呆了一段时间直到我意识到这一点。Thx @aneal
Richard Le Mesurier

5
这将在运行Android 3.0(API 11)的平板电脑上崩溃,因为它不喜欢人们定义样式“ android:actionOverflowButtonStyle”(可能是平台错误)的人。因此,您必须在values-v11 / styles.xml和values-v15 / styles.xml中使用不同的样式。
Mr-IDE

10
对于ActionBarSherlock用户,父样式为:parent="Widget.Sherlock.ActionButton.Overflow"
尼克·怀特

7
对于appcompat(无论如何还是v21棒棒糖),parent="@style/Widget.AppCompat.ActionButton.Overflow"似乎对我有用 。
胖子

16

对于那些无法使它正常工作的人,请尝试此操作而无需使用“ android:”命名空间。

<item name="actionOverflowButtonStyle">@style/OverFlow</item>

谢谢队友,这确实有所帮助。有人对此有解释吗?
DaMachk 2015年

4
@DaMachk如果您使用的是AppCompat,则不要包含“ android:”命名空间。
matiash

4
  1. 在styles.xml中更改操作栏的自定义溢出图标。

     <resources>
        <!-- Base application theme. -->
        <style name=“MyTheme" parent="@android:style/Theme.Holo">
           <!-- Pointer to Overflow style DONT forget! -->
           <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item>
        </style>
    
        <!-- Styles -->
        <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
            <item name="android:src">@drawable/ic_your_action_overflow</item>
        </style>
     </resources>
  2. 将自定义主题“ MyTheme”放入AndroidManifest.xml的应用程序标记中

    <application
        android:name="com.example.android.MainApp"
        android:theme="@style/AppTheme">
    </application>

玩得开心。@。@


4

无论我尝试做什么styles.xml,都没有一种解决方案适合我。最后,如果您拥有应有的AppCompat 23+,则这是实际可行的最简单方法:

toolbar.setOverflowIcon(drawable);

我发现的最准确的方法!
Shubhamhackz

1

@adneal的答案是正确的(因此,这只是社区维基的解释)。

其中一条评论建议您可能对如何执行此操作有误解,因此我的回答只是关于如何覆盖“溢出”图标图像的另一个示例。

以下代码基于ADT示例“新建Android项目”中的模板样式。该代码来自styles.xml文件res/values夹中的文件。


<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>

<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_menu_moreoverflow</item>
</style>

上面的代码所做的是用您拥有的任何可绘制对象替换默认的溢出图标ic_menu_moreoverflow。如果您想要一种快速的测试方法,请使用应用程序的启动器图标文件名,这将使其变得显而易见。

尝试了解ActionBar样式时要使用的有用资源是:

您可以在此处定义用于“溢出”图标的特定颜色,并且ZIP文件将包含styles.xml适合您的正确文件。


1

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

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

要么

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

它将更改图标,选择所需的任何颜色并将其设置为Overflowicon。


0

经过长时间的搜索,我得到了如下指导:

  1. 检查清单文件中的主题。
  2. 然后转到res-> values-> themes。
  3. 在此文件中找到主题名称。
  4. 在theme.xml中的主题内添加项目:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. 将样式中的图标添加到同一文件中,我的意思是theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. 签出您想要更改的自定义图标

对我有用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.