更改操作栏中的溢出图标

时间:2012-03-16 07:13:03

标签: android android-3.0-honeycomb android-actionbar android-4.0-ice-cream-sandwich

是否可以更改操作栏中的溢出图标?我有所有ActionBar项目的蓝色图标,我还想在出现时更改溢出图标。

7 个答案:

答案 0 :(得分:250)

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

<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>

你也可以动态地改变它,我在这里详细介绍:

Changing the Android Overflow menu icon programmatically

答案 1 :(得分:16)

对于那些无法让它工作的人,试试这个没有“android:”命名空间。

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

答案 2 :(得分:4)

  1. 在styles.xml中更改Actionbar的自定义溢出图标。

     <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>
    
  3. 玩得开心。@。@

答案 3 :(得分:4)

无论我在styles.xml尝试做什么,都没有一个解决方案适合我。最后,如果您有AppCompat 23+,那么这是最简单的实际工作方式:

toolbar.setOverflowIcon(drawable);

答案 4 :(得分:1)

@adneal's answer是正确的(所以这只是一个社区维基解释来扩展它)。

其中一条评论表明可能存在误解如何执行此操作,因此我的答案只是关于如何覆盖溢出图标图像的另一个示例。

以下代码基于ADT示例New Android Project中的模板样式。代码来自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文件。

答案 5 :(得分:0)

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

  1. 检查宣言文件中的主题。
  2. 然后转到res-&gt; values-&gt; 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. 查看您要更改的自定义图标

  7. 它对我有用

答案 6 :(得分:0)

要更改“溢出”图标的颜色,只需添加

auto

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

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