如何显示动作条溢出菜单图标?(How to show icons in ActionBar over

2019-07-31 01:11发布

我想除了菜单项冠军溢出下拉菜单中显示的图标。

是有可能吗?

Answer 1:

把你的菜单财产android:showAsAction="always" ,并在菜单中的XML文件中添加下的子菜单,你的菜单是这样

<item
        android:id="@+id/mainMenu"
        android:icon="@drawable/launcher"
        android:showAsAction="always">
        <menu>

            <item
                android:id="@+id/menu_logout"
                android:icon="@drawable/log_out"
                android:title="logout"/>
        </menu>
    </item>

这将显示在菜单中的图标



Answer 2:

其实有一个简单的方法去实现它,因为你看到的其实是一个TextView,所以你设定一个范围,例如:

final MenuItem menuItem=...
final ImageSpan imageSpan=new ImageSpan(this,R.drawable.ic_stat_app_icon);
final CharSequence title=" "+menuItem.getTitle();
final SpannableString spannableString=new SpannableString(title);
spannableString.setSpan(imageSpan,0,1,0);
menuItem.setTitle(spannableString);

这将会把一个图标菜单项的开始,它的原文之前。



Answer 3:

也许你有同样的问题我。 所以对我来说解决办法很简单,如果你使用的程序兼容性只是不使用这个属性:

android:showAsAction="always"

用它代替这样的:

<?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">
    <item
        android:id="@+id/option"
        android:title="@string/option"
        android:icon="@drawable/option"
        app:showAsAction="always">
    </item>
</menu> 

有一个在aditional的差异的xmlns:应用程序showAsAction应用程序的性能。

希望它可以帮助别人。



Answer 4:

讨厌这样的答案,但我不够好给一个更好的答案。

用于菜单的溢出项的图标是submenu2线“subMenu2Item.setIcon(R.drawable.ic_launcher);” 只是你的图标文件(在res程序的绘制目录)取代ic_launcher。 希望你的意思是使用ActionBarSherlock。

行subMenu1Item.setIcon(R.drawable.ic_launcher); 是在顶部的菜单按钮的动作条图标。

在回应“这不是设计可能”

非常感谢谷歌企图接管世界,让我们骑它的外衣尾巴,但是...谷歌是太不协调将超过不一致脾气暴躁。 这将是很好,如果谷歌可以使对于每一个“组”的API,他们提供了一个例子。 有代码API参考,但不懂得如何把它们放在一起例如,可以运行作为一个APK整整工作完全的例子就是我想要的。 我可以从那里诱骗出来。 如果他们能花时间来写APK它多么困难将是一个标准的模板代码一个小例子? 对于一切的30%,这不是过分的要求了。 我有同样的说法与微软早在一天并没有发生那么无论是。 因而,所以你得到计算器。 :)它需要一些人(在杰克沃顿岩)对自己的工作做比谷歌向后兼容操作栏更好的工作可以拿出其荒谬操作栏补丁啄一种耻辱。

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {

    SubMenu subMenu1 = menu.addSubMenu("Action Item");
    subMenu1.add("Help");
    subMenu1.add("About");

    MenuItem subMenu1Item = subMenu1.getItem();
    subMenu1Item.setIcon(R.drawable.ic_launcher);
    subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    SubMenu subMenu2 = menu.addSubMenu("All Options");
    subMenu2.add("Help");
    subMenu2.add("About");

    MenuItem subMenu2Item = subMenu2.getItem();
    subMenu2Item.setIcon(R.drawable.ic_launcher);

    return super.onCreateOptionsMenu(menu);
}


Answer 5:

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

参考: 如何显示溢出菜单图标的动作条



Answer 6:

这是不可能的设计(至少在HC - 和我开发的API 16和没有得到任何的图标)。 谷歌不希望我们这样做。

对于一点的话题讨论,在这里看到相关的答案:

  • 显示了操作栏的菜单项图标在蜂巢的Android 3.0

作为一个评论暗示,如果你需要的图标,可以考虑使用一个下拉菜单,而不是溢出菜单。



文章来源: How to show icons in ActionBar overflow menu?