如何更改操作栏中的选项菜单图标?

问题描述:

如何更改选项菜单的索引图标?如何更改操作栏中的选项菜单图标?

enter image description here

我的意思是图标(3)。

这里是我的代码:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options, menu); 

    return true; 
} 

这里是XML文件:

<item android:id="@+id/Bugreport" 
    android:title="@string/option_bugreport" /> 

<item android:id="@+id/Info" 
    android:title="@string/option_info" /> 

<item android:id="@+id/About" 
    android:title="@string/option_about" /> 

以下行应在应用进行更新 - >主 - >水库 - >数值 - > Styles.xml

<!-- 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/MyActionButtonOverflow</item> 
</style> 

<!-- Style to replace actionbar overflow icon. set item 'android:actionOverflowButtonStyle' in AppTheme --> 
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.Light.ActionButton.Overflow"> 
    <item name="android:src">@drawable/ic_launcher</item> 
    <item name="android:background">?android:attr/actionBarItemBackground</item> 
    <item name="android:contentDescription">"Lala"</item> 
</style> 

这是它是如何做。如果你想改变操作栏中的菜单图标

+0

@smartmouse让我知道你是否面临任何问题 – 2014-10-10 13:38:49

+0

工作过,非常感谢你! contentDescription中“Lala”的需求是什么? – smartmouse 2014-10-10 14:41:18

+1

欢迎您,我很乐意为您提供帮助,实际上没有这种需求,但是我们给每个图片描述了这一点,这就是为什么我使用它的原因,'lala'意思是我的语言中的好朋友;) – 2014-10-11 19:06:06

,你可以通过做

做到这一点个
<item 
    android:id="@+id/menus" 
    android:actionProviderClass="@android:style/Widget.Holo.ActionButton.Overflow" 
    android:icon="@drawable/your_icon" 
    android:showAsAction="always"> 
    <item android:id="@+id/Bugreport" 
    android:title="@string/option_bugreport" /> 

    <item android:id="@+id/Info" 
    android:title="@string/option_info" /> 

<item android:id="@+id/About" 
    android:title="@string/option_about" /> 
    </item> 
+1

调用,一个黑客是一种误导。这是Android系统的标准部分。 – 2014-10-10 13:31:56

+0

好吧,我明白了...... – Pravin 2014-10-10 13:38:34

+0

我并不是说你错了,这是正确的答案。但它绝对不是黑客。 – 2014-10-10 13:39:28

  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> 
    

玩得开心。@。@

我有一个简单的解决方案,它完美地工作对我来说:你们班

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.change_pass); 
     toolbar.setOverflowIcon(drawable); 
+2

这样一个被低估的方法,对我来说是完美的。 – 2016-04-24 17:06:16

+0

对我来说,它也工作得很好,并且程序化的方式,我们可以随时更改它,这是增加的优势。谢谢帕蒂。 – Swapnil 2016-05-10 10:35:58

+0

完美地工作!谢谢。 – mnrl 2016-08-11 21:29:28

1)声明menu

private Menu menu; 

2)onCreateOptionsMenu做到以下几点:

public boolean onCreateOptionsMenu(Menu menu) { 
    this.menu = menu; 
    getMenuInflater().inflate(R.menu.menu_orders_screen, menu); 
    return true; 
} 

3)在onOptionsItemSelected,获得该项目,并做修改的要求(图标,文字,颜色,背景)

public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.action_search) { 
     return true; 
    } 
    if (id == R.id.ventor_status) { 
     return true; 
    } 
    if (id == R.id.action_settings_online) { 
     menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.history_converted)); 
     menu.getItem(1).setTitle("Online"); 
     return true; 
    } 
    if (id == R.id.action_settings_offline) { 
     menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.cross)); 
     menu.getItem(1).setTitle("Offline"); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

备注
如果您有3菜单项:
menu.getItem(0)= 1的项目,
menu.getItem(1)= 2 ITEAM,
menu.getItem(2)= 3项

在此基础上相应地作为进行更改根据您的要求。

+0

他正在讨论菜单图标本身,而不是菜单项。 – Genc 2016-09-23 09:51:54

//just edit menu.xml file  
//add icon for item which will change default setting icon 
//add sub menus 


///menu.xml file 


    <item 
      android:id="@+id/action_settings" 
      android:orderInCategory="100" 
      android:title="@string/action_settings" 
      android:icon="@drawable/your_icon" 
      app:showAsAction="always" > 

      <menu> 

       <item android:id="@+id/action_menu1" 
        android:icon="@android:drawable/ic_menu_preferences" 
        android:title="menu 1" /> 

       <item android:id="@+id/action_menu2" 
        android:icon="@android:drawable/ic_menu_help" 
        android:title="menu 2" /> 

      </menu> 
     </item> 
+0

谢谢!它的工作原理:)只想提及“action_settings”的项目应该包裹在“

...” – flame3 2016-06-27 11:00:08

使用赛拉扎梅迪的例子,并添加在Application themename=actionOverflowButtonStyle的参数的兼容性。

<!-- 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/MyActionButtonOverflow</item> 

    <!-- For compatibility --> 
    <item name="actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 

</style> 

一个短期和简单的方法来更改选项菜单中的索引图标的颜色是:

<!-- android:textColorSecondary is the color of the menu overflow icon (three vertical dots) --> 
<item name="android:textColorSecondary">@color/optionMenuIconColor</item> 

上方添加一行代码到风格 .xml(可自定义主题)文件, 希望你得到解答,非常感谢。

+0

即使它起作用,这也是一件愚蠢的事情去做;它会更改实际的辅助应用程序的文本颜色,在许多位置和小部件中用作 - 您猜对它 - 文本颜色。 – 2017-03-22 03:12:01

这正常工作在我的情况:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(), 
               R.drawable.change_pass); 
toolbar.setOverflowIcon(drawable);