如何在android中用菜单显示图标

如何在android中用菜单显示图标,android,android-menu,Android,Android Menu,我想在选项菜单中显示图标。我尝试了很多方法,但都没有成功。在我的工具栏中已经有一些图标,但我希望在我的选项菜单中有图标。 我希望与下图相同:- My menu.xml:- <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas

我想在选项菜单中显示图标。我尝试了很多方法,但都没有成功。在我的工具栏中已经有一些图标,但我希望在我的选项菜单中有图标。 我希望与下图相同:-

My menu.xml:-

    <menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">


 <item
        android:id="@+id/action_search"
        android:title="@string/action_search"
        android:orderInCategory="1"
        android:icon="@drawable/search"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_cart"
        android:title="@string/action_search"
        android:orderInCategory="2"
        android:icon="@drawable/shoppingcart"
        android:actionLayout="@layout/feed_update_count"
        app:showAsAction="ifRoom" />

   <item
    android:id="@+id/menu_overflow"
    android:title="@string/my_cart"
    android:icon="@drawable/ic"
    android:orderInCategory="11111"
    app:showAsAction="always">

        <menu>


    <item
        android:id="@+id/login"
        android:title="@string/login"
        android:orderInCategory="1"
        android:icon="@drawable/account"
        app:showAsAction="always|withText"/>

    <item
        android:id="@+id/my_order"
        android:title="@string/my_order"
        android:orderInCategory="2"
        android:icon="@drawable/track"
        app:showAsAction="withText"/>

    <item
        android:id="@+id/wishlist"
        android:title="@string/wishlist"
        android:orderInCategory="3"
        android:icon="@drawable/wishlist"
        app:showAsAction="withText"/>

        </menu>
    </item>



</menu>


我是android开发新手,任何人都可以帮助我如何在选项菜单中显示图标。提前谢谢

默认情况下,溢出菜单将禁用图标并仅显示文本,您需要一些解决方法

第一路

您可以通过向类中添加以下代码来启用它

@Override
public boolean onMenuOpened(int featureId, Menu menu)
{
    if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
        if(menu.getClass().getSimpleName().equals("MenuBuilder")){
            try{
                Method m = menu.getClass().getDeclaredMethod(
                    "setOptionalIconsVisible", Boolean.TYPE);
                m.setAccessible(true);
                m.invoke(menu, true);
            }
            catch(NoSuchMethodException e){
                Log.e(TAG, "onMenuOpened", e);
            }
            catch(Exception e){
                throw new RuntimeException(e);
            }
        }
    }
    return super.onMenuOpened(featureId, menu);
}
第二条道路

创建自己的溢出项和嵌套菜单以显示图标和文本

例如

<item
    android:id="@+id/overflow"
    android:icon="@drawable/ic_overflow_white"
    android:orderInCategory="201"
    android:title="@string/overflow"
    app:showAsAction="always">

        <menu>
            <item
                android:id="@+id/cab_menu_select_all"
                android:icon="@drawable/ic_select_all_grey"
                android:orderInCategory="100"
                android:title="@string/cab_menu_select_all"
                app:showAsAction="always|withText"></item>
        </menu>

</item>

试试这段代码,它适合你

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:title="@string/action_search"/>
<!-- Settings, should always be in the overflow -->
<item
android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:showAsAction="always"
android:title="@string/action_location_found"/>
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_action_menu"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<!-- Refresh -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="ifRoom"
android:title="@string/action_refresh"/>
<!-- Help -->
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:showAsAction="never"
android:title="@string/action_help"/>
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="never"
android:title="@string/action_check_updates"/>
</menu>
</item>
</menu>
- See more at: http://www.theappguruz.com/blog/android-working-android-actionbar#sthash.ArNQTEBF.dpuf

-更多信息,请访问:http://www.theappguruz.com/blog/android-working-android-actionbar#sthash.ArNQTEBF.dpuf

创建菜单xml,如下所示

<item
   android:id="@+id/menu_item_action_parameters"
   android:title="@string/text_parameters"
   android:icon="@drawable/ic_menu_parameter"
   app:showAsAction="ifRoom|withText"/> >
   <menu>
      <item 
        android:id="@+id/action_dropdown1"
        android:title="@string/dropdown_1" />
      <item 
        android:id="@+id/action_dropdown2"
        android:title="@string/dropdown2" />
      <item 
        android:id="@+id/action_dropdown3"
        android:title="@string/dropdown3" />
    </menu>
</item>

<item
  more item
</item>


这是完全有效的代码。如果有帮助,请标记此答案。:)快乐编码。

您需要向菜单标签添加工具:context=“your class”

<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   tools:context=".activities.BaseActivity">


   <item
       android:id="@+id/action_notification1"
       android:icon="@drawable/one"
       android:title="action_notification"
       app:showAsAction="always"/>
 <item
       android:id="@+id/action_notification2"
       android:icon="@drawable/two"
       android:title="action_notification"
       app:showAsAction="always"/>
 <item
       android:id="@+id/action_notification3"
       android:icon="@drawable/three"
       android:title="action_notification"
       app:showAsAction="always"/>

 </menu>



 @Override 
         public boolean onCreateOptionsMenu(Menu menu) {

         getMenuInflater().inflate(R.menu.main, menu); 

         return super.onCreateOptionsMenu(menu);

         } 

@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回super.onCreateOptions菜单(菜单);
} 

你应该写工具:上下文到菜单标签,然后运行你会得到你的文本图标

@AnandJain我已经更新了我的答案,检查第二种方式这项工作,但在主项图标也显示三个白色点没有显示。你能做一个屏幕截图连同你的XML可能的副本吗
<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   tools:context=".activities.BaseActivity">


   <item
       android:id="@+id/action_notification1"
       android:icon="@drawable/one"
       android:title="action_notification"
       app:showAsAction="always"/>
 <item
       android:id="@+id/action_notification2"
       android:icon="@drawable/two"
       android:title="action_notification"
       app:showAsAction="always"/>
 <item
       android:id="@+id/action_notification3"
       android:icon="@drawable/three"
       android:title="action_notification"
       app:showAsAction="always"/>

 </menu>



 @Override 
         public boolean onCreateOptionsMenu(Menu menu) {

         getMenuInflater().inflate(R.menu.main, menu); 

         return super.onCreateOptionsMenu(menu);

         }