如何在XML编写的option menu的文本旁添加对应图片?
该需求完全可以实现,以Android平台原生XML菜单实现为例,具体操作步骤如下:
- 第一步:编写菜单XML资源(存放在
res/menu/目录下),通过<item>标签的android:icon属性绑定对应图片资源,示例代码如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_archive" android:title="Archive" android:icon="@drawable/ic_archive" /> <item android:id="@+id/menu_delete" android:title="Delete" android:icon="@drawable/ic_delete" /> <item android:id="@+id/menu_mark_read" android:title="Mark as read" android:icon="@drawable/ic_mark_read" /> <item android:id="@+id/menu_move" android:title="Move to" android:icon="@drawable/ic_move" /> </menu>
- 第二步:适配系统默认样式的图标显示限制。部分系统版本默认隐藏菜单图标,可在Activity中重写
onPrepareOptionsMenu方法,通过反射强制开启图标显示,示例代码如下:
@Override public boolean onPrepareOptionsMenu(Menu menu) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method setIconsVisibleMethod = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", boolean.class); setIconsVisibleMethod.setAccessible(true); setIconsVisibleMethod.invoke(menu, true); } catch (Exception e) { // 自定义异常处理逻辑 } } return super.onPrepareOptionsMenu(menu); }
- 第三步:自定义样式调整。如果需要修改图标大小、图标和文本的间距等样式,可单独编写菜单项的自定义布局XML,在
<item>标签中通过android:actionLayout属性绑定自定义布局即可实现完全自定义的显示效果。
实现效果参考:
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

