上下文菜单上的图标没有显示?
Icons on a context menu are not showing?
当我长按 recyclerview 项目时,上下文菜单只显示文本,不显示相关图标,代码如下:
<?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">
<item
android:id="@+id/bookmark"
android:orderInCategory="1"
android:title="@string/bookmarked_ayah"
android:icon="@drawable/ic_bookmark" />
<item
android:id="@+id/fbshare"
android:orderInCategory="2"
android:title="@string/fb_share"
android:icon="@drawable/ic_facebookshare" />
<item
android:id="@+id/saveayah"
android:orderInCategory="3"
android:title="@string/save_ayah"
android:icon="@drawable/ic_save" />
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.ayah_saving_actionbar_items,menu);
return true;
}
如果您 运行 您的代码是 Android 3.0+,则菜单中的图标不会按设计显示。这是 Google 的设计决定。
但是如果你真的想显示图标,你可以使用代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
try {
Field field = menu.getClass().getDeclaredField("mOptionalIconsVisible");
field.setAccessible(true);
field.setBoolean(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
return super.onPrepareOptionsMenu(menu);
}
它使用反射并将图标设置为可见。我进行了测试,结果如下:
当我长按 recyclerview 项目时,上下文菜单只显示文本,不显示相关图标,代码如下:
<?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">
<item
android:id="@+id/bookmark"
android:orderInCategory="1"
android:title="@string/bookmarked_ayah"
android:icon="@drawable/ic_bookmark" />
<item
android:id="@+id/fbshare"
android:orderInCategory="2"
android:title="@string/fb_share"
android:icon="@drawable/ic_facebookshare" />
<item
android:id="@+id/saveayah"
android:orderInCategory="3"
android:title="@string/save_ayah"
android:icon="@drawable/ic_save" />
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.ayah_saving_actionbar_items,menu);
return true;
}
如果您 运行 您的代码是 Android 3.0+,则菜单中的图标不会按设计显示。这是 Google 的设计决定。
但是如果你真的想显示图标,你可以使用代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
try {
Field field = menu.getClass().getDeclaredField("mOptionalIconsVisible");
field.setAccessible(true);
field.setBoolean(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
return super.onPrepareOptionsMenu(menu);
}
它使用反射并将图标设置为可见。我进行了测试,结果如下: