2015-11-20 68 views
-3

我想在选项菜单中显示图标。我尝试了很多方法,但我找不到成功。在我的工具栏中已经放置了一些图标,但我想在我的选项菜单中选择图标。 我想下同图像: -如何在android中显示带菜单的图标

enter image description here

我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任何新能帮助我如何显示选项菜单图标。提前致谢!

+0

的可能的复制[菜单图标不显示在andrid](http://stackoverflow.com/questions/33801485/menu-icon-is-not-showing-in-andrid) –

回答

2

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

1路

您可以通过添加以下代码到你的类

@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> 
+0

没有图标显示。 –

+0

@AnandJain我已经更新了我的答案,退房第二种方式 –

+0

这项工作但是在主项目图标上也显示三个白色点没有显示。 –

0

试试这个代码,它为你的作品

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

创建您的菜单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> 

然后

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch (id) { 
    case R.id.action_dropdown1: 
    ..... 
    return true; 

    case R.id.action_dropdown2: 
    ..... 
    return true; 

    ..... 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
    } 

这完全是工作code.Mark这个回答,如果它帮助。 :)快乐的编码。

0

你需要添加工具:上下文=“类”菜单标签

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

     } 

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

相关问题