我在Play商店(Raleigh Nights)上有一个Android应用程序,我刚刚注意到我的溢出按钮中的可绘制图标没有显示,尽管文本正确显示。一切都在4.3上正确显示,我不知道是什么可能导致差异。当我使用模拟器进行调试时,它似乎设置了MenuItem图标并且不会抛出任何异常。我花了好几个小时试图弄清楚发生了什么事无济于事。同样,它适用于旧版本,但不会显示4.4.2(KitKat)中的图标。它也会在一些4.4.2手机上崩溃,虽然我无法让它在模拟器上崩溃。
我将目标设置为19。 minVersion = 11;
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
我还要包含菜单按钮,我必须看看它是否有帮助。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Will always be in the overflow -->
<item android:id="@+id/menu_drink_specials"
android:title="@string/drinks"
android:icon="@drawable/added"
android:showAsAction="never"/>
<item android:id="@+id/menu_food_specials"
android:title="@string/food"
android:icon="@drawable/added"
android:showAsAction="never"/>
<item android:id="@+id/menu_events"
android:title="@string/events"
android:icon="@drawable/added"
android:showAsAction="never"/>
<item android:id="@+id/sort_location"
android:title="@string/sortLocation"
android:icon="@drawable/added"
android:showAsAction="never"/>
</menu>
还有其他人遇到过这个问题吗?看起来奇怪的是它在其他版本中工作得很好,并没有引起任何错误。
谢谢你的时间, 麦克
答案 0 :(得分:2)
您确定溢出菜单中的项目旁边有图标吗?故意不允许这样做:
Displaying icon for menu items of Action Bar in Honeycomb android 3.0
似乎有几种黑客可以做出像这样的工作。也许您正在使用其中一个,这是导致您崩溃的原因。
但是,如果你想完全控制它,最好扩展PopupWindow
并简单地将你喜欢的任何布局扩展到其中。然后你可以创建一个假的&#39;操作栏中的溢出按钮,并将PopupWindow配置为显示在其下方。
答案 1 :(得分:1)
使用android:showAsAction="never"
设置项目的方式永远不会将图标放入溢出菜单。默认情况下,Android不允许这样做。显示图标的唯一方法是使showAsAction等于always
或ifroom
,并设置android:icon
。如果没有溢出菜单中的图标,您的应用很可能看起来很好。
答案 2 :(得分:0)
尝试将此代码放在您的活动上。
@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);
}
答案 3 :(得分:0)
将这些属性添加到菜单标记中并尝试
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
答案 4 :(得分:0)
您配置了“android:showAsAction =”never“”这样,并且永远不会将图标显示在溢出菜单中。
尝试更改您的代码
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Will always be in the overflow -->
<item android:id="@+id/menu_drink_specials"
android:title="@string/drinks"
android:icon="@drawable/added"
android:showAsAction="ifRoom"/>
<item android:id="@+id/menu_food_specials"
android:title="@string/food"
android:icon="@drawable/added"
android:showAsAction="ifRoom"/>
<item android:id="@+id/menu_events"
android:title="@string/events"
android:icon="@drawable/added"
android:showAsAction="ifRoom"/>
<item android:id="@+id/sort_location"
android:title="@string/sortLocation"
android:icon="@drawable/added"
android:showAsAction="ifRoom"/>
</menu>