我知道使用原生API是不可能的。有没有实现这种视图的变通方法?
发布于 2014-03-10 06:15:07
一般来说,之前发布的答案是可以的。但它基本上删除了溢出菜单的默认行为。比如有多少个图标可以显示在不同的屏幕尺寸上,然后当它们不能显示时,它们会跳到溢出菜单中。通过执行上述操作,您删除了许多重要的功能。
一种更好的方法是告诉overflow菜单直接显示图标。您可以通过将以下代码添加到您的活动中来完成此操作。
@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);
}
发布于 2013-12-02 06:37:11
在您的菜单xml中,使用以下语法嵌套菜单,您将开始获得带有图标的菜单
<item
android:id="@+id/empty"
android:icon="@drawable/ic_action_overflow"
android:orderInCategory="101"
android:showAsAction="always">
<menu>
<item
android:id="@+id/action_show_ir_list"
android:icon="@drawable/ic_menu_friendslist"
android:showAsAction="always|withText"
android:title="List"/>
</menu>
</item>
发布于 2017-02-15 23:32:46
根据前面的答案尝试了一下,它工作得很好,至少在较新版本的支持库(25.1)中是这样的:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
if(menu instanceof MenuBuilder){
MenuBuilder m = (MenuBuilder) menu;
//noinspection RestrictedApi
m.setOptionalIconsVisible(true);
}
return true;
}
https://stackoverflow.com/questions/18374183
复制相似问题