【问题标题】:Displaying icon along with text in Android overflow menu of Action Bar在操作栏的 Android 溢出菜单中显示图标和文本
【发布时间】:2016-03-23 18:24:36
【问题描述】:

有没有一种方法可以在 android 的操作栏溢出菜单中显示图标和文本。
我的代码如下:

  <menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/menu_share"
      android:title="share"
      android:showAsAction="always"
      android:actionProviderClass="android.widget.ShareActionProvider" />


 <item
    android:id="@+id/action_search"
    android:showAsAction="always|collapseActionView"
    android:icon="@drawable/ic_menu_search"
    android:title="Search"
    android:actionViewClass="android.widget.SearchView">  

   <item
    android:id="@+id/item_refresh"
    android:icon="@drawable/ic_menu_refresh"
    android:title="Refresh"
    android:showAsAction="ifRoom|withText"
    />

  <item
    android:id="@+id/item_save"
     android:icon="@drawable/ic_menu_save"
     android:title="Save"
     android:showAsAction="ifRoom|withText"

    ></item>
 </menu>

谁能帮我解决这个问题。我需要在显示在操作栏右上角的溢出中显示这两个图标和文本。


提前致谢

【问题讨论】:

  • 我也是这样做的,但是我只能看到没有图标的文字

标签: android android-actionbar


【解决方案1】:

据我了解,Action Overflow 仅显示文本 (android:title)。我一直在浏览一些应用程序,但它们都没有在 Action Overflow 内的项目上有“图标+文本”。

【讨论】:

  • 但在从 google play 下载的 Cricbuzz 应用程序中,它会在 oveflow 菜单中显示图标和文本
  • 同意。我不相信这是可能的,绝对不是内置选项之一。
  • @Android_programmer_office 我明白了。我的猜测是他们“伪造”了溢出。
【解决方案2】:

AFAIK,这是不可能的。您可以做的是使用ListPopupWindow 来完成此操作。我不得不使用自定义栏而不是ActionBar,因为它似乎不是很可自定义,而且我使用了PopupMenu,但我还没有尝试放入图标。但是ListPopupWindow 也应该允许你。您可能必须使用自定义栏。可能以某种方式将其附加到oveflow 按钮,但我不确定这是否可能

注意ListPopupWindow 需要 API >=11

【讨论】:

  • 但在从 google play 下载的 Cricbuzz 应用程序中,它会在 oveflow 菜单中显示图标和文本
  • 我不知道那个应用程序,但他们可能使用了自定义栏,就像我必须伪造它一样。我创建了一个 BaseActivity 作为我的另一个 Activities 的超类,并将菜单内容放在那里并覆盖菜单方法
【解决方案3】:

尝试创建自定义溢出菜单:

<item
        android:id="@+id/action_overflow"
        android:icon="@drawable/overflow"
        android:showAsAction="always">
        <menu>
           <item android:id="@+id/menu_share"
          android:title="share"
          android:showAsAction="always"
          android:actionProviderClass="android.widget.ShareActionProvider" />
            <item
            android:id="@+id/action_search"
            android:showAsAction="always|collapseActionView"
            android:icon="@drawable/ic_menu_search"
            android:title="Search"
            android:actionViewClass="android.widget.SearchView">  
            <item
            android:id="@+id/item_refresh"
            android:icon="@drawable/ic_menu_refresh"
            android:title="Refresh"
            android:showAsAction="ifRoom|withText"
            />

            <item
            android:id="@+id/item_save"
            android:icon="@drawable/ic_menu_save"
            android:title="Save"
            android:showAsAction="ifRoom|withText"

            ></item>
        </menu>
    </item> 

【讨论】:

    【解决方案4】:

    你需要添加 tools:context="your class" 到菜单标签

    <?xml version="1.0" encoding="utf-8"?>
    <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/three"
           android:title="action_notification"
           app:showAsAction="always">
           <menu>
               <item
                   android:id="@+id/profile"
                   android:icon="@drawable/profile"
                   android:orderInCategory="100"
                   android:title="PROFILE" />
    
               <item
                   android:id="@+id/c"
                   android:icon="@drawable/correct_tick"
                   android:orderInCategory="100"
                   android:title="COMPLETED TRIPS" />
    
               <item
                   android:id="@+id/app"
                   android:icon="@drawable/report_issue"
                   android:orderInCategory="100"
                   android:title="REPORT ISSUES" />
               <item
                   android:id="@+id/r"
                   android:icon="@drawable/correct_tick"
                   android:orderInCategory="100"
                   android:title="REACHED CENTER" />
    
    
               <item
                   android:id="@+id/pdf"
                   android:icon="@drawable/pdf_image"
                   android:orderInCategory="100"
                   android:title="BAG INFO" />
               <item
                   android:id="@+id/l"
                   android:icon="@drawable/logout"
                   android:orderInCategory="100"
                   android:title="LOGOUT" />
           </menu>
       </item>
    
    
    </menu>
    
    
    
         @Override 
             public boolean onCreateOptionsMenu(Menu menu) {
    
             getMenuInflater().inflate(R.menu.main, menu); 
             menu.getItem(0).getSubMenu().getItem(3).setVisible(false);
             menu.getItem(0).getSubMenu().getItem(4).setVisible(true);
             return super.onCreateOptionsMenu(menu);
    
             } 
    

    你应该将 tool:context 写入菜单标签,然后运行你会得到你的文本的图标

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      相关资源
      最近更新 更多