如何更改Android溢出菜单图标

时间:2011-07-22 13:13:00

标签: android android-3.0-honeycomb

如何更改操作栏最右侧的“溢出菜单”图标,如下图所示?我的Holo主题默认指定这个3行黑色堆栈图标,我想要别的东西。我似乎找不到解决方案。我查看了http://developer.android.com/guide/topics/ui/menus.html上的文档,但它似乎没有提供太多帮助。

谢谢!

"ActionBar"

8 个答案:

答案 0 :(得分:28)

您可以尝试这样的事情:

<style name="MyTheme" parent="android:style/Theme.Holo.Light">
     <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
</style>

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

和AndroidManifest.xml

<application
    android:theme="@style/MyTheme" >

答案 1 :(得分:19)

定义自定义样式:例如,我们称之为customoverflow

在此样式中,您将android:src设置为您要使用的图片。 现在创建一个父Theme.holo的样式。

在这种风格中你需要定义:

<item name="android:actionOverflowButtonStyle">@style/customoverflow</item>

我刚试过这个并且有效。

答案 2 :(得分:10)

如果您正在使用AppCompat,则可以通过以下代码来实现。

RES /值/的themes.xml

<style name="MyTheme" parent="@style/Theme.AppCompat.Light">
     <item name="android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item>

      <!-- Support library compatibility -->
     <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item>

</style>

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

和androidmanifest.xml

<application
    android:theme="@style/MyTheme" >

答案 3 :(得分:3)

我注意到如果应用程序的主题是Holo,它会变成白色,但是当主题是Holo.Light

时它会变黑。

但是,将操作栏的样式更改为从Holo继承并从Holo.Light继承应用程序的其余部分并不能解决问题,但它应该指向您应该修改哪种样式的方向。

我试过的是:

<style name="AppThemeLight" parent="android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
</style>    
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/header_brown</item>
    <item name="android:titleTextStyle">@style/ActionBarTitle</item>
    <item name="android:icon">@drawable/header</item>       
</style>

我有同样的问题,我认为这接近解决方案

答案 4 :(得分:0)

Shalafi的解决方案有一些变化!您需要指定theme.Holo作为主题的父级,但它有改变默认文本颜色的缺点(至少在我的样式中)。

修改后的代码应为:

   <style name="AppThemeLight" parent="android:style/Theme.Holo">
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
</style>    
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/header_brown</item>
    <item name="android:titleTextStyle">@style/ActionBarTitle</item>
    <item name="android:icon">@drawable/header</item>       
</style>

答案 5 :(得分:0)

重复的问题, Changing overflow icon in the action bar

这是我的答案,如下所示,

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

答案 6 :(得分:0)

基本上,较新的API级别中提供的主题自定义设置可以放在res/values-vXX/styles.xml中,而与向后兼容性相关的自定义设置可以values/styles.xml

Shalafi的解决方案可以添加一些功能:所以  将此代码添加到res/values-vXX/styles.xmlres/values/styles.xml,这将像魔术一样工作!

<style name="AppTheme" parent="android:style/Theme.Holo.Light">
 <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
</style>

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

也将其添加到AndroidManifest.xml

<application
    android:theme="@style/AppTheme" >

答案 7 :(得分:0)

<style name="ToolBarTheme" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:tint">@color/colorAccent</item>

创建上述主题。使用您的颜色设置色调并将此主题添加到工具栏。

<androidx.appcompat.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ToolBarTheme"/>