【发布时间】:2018-07-24 10:30:49
【问题描述】:
单击按钮时,我将显示包含语言列表的菜单。现在我希望图标显示在菜单中每个项目的标题右侧。我用谷歌搜索但没有找到合适的解决方案,请帮助我。
menu_language.xml:
<?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/nav_arabic"
android:title="Arabic" />
<item
android:id="@+id/nav_southAfrica"
android:icon="@drawable/ic_earphones"
android:title="Afrikaans"
/>
<item
android:id="@+id/nav_albania"
android:icon="@drawable/ic_earphones"
android:title="Albanian " />
<item
android:id="@+id/nav_armenian"
android:title="Armenian" />
<item
android:id="@+id/nav_azerbaijani"
android:icon="@drawable/ic_earphones"
android:title="Azerbaijani" />
<item
android:id="@+id/nav_bangla"
android:icon="@drawable/ic_earphones"
android:title="Bangla" />
<item
android:id="@+id/nav_basque"
android:icon="@drawable/ic_earphones"
android:title="Basque" />
<item
android:id="@+id/nav_belarusian"
android:title="Belarusian" />
语言.java:
public void showMenu(View v) {
PopupMenu popup = new PopupMenu(getActivity(), v);
Object menuHelper;
Class[] argTypes;
try {
Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup");
fMenuHelper.setAccessible(true);
menuHelper = fMenuHelper.get(popup);
argTypes = new Class[]{boolean.class};
menuHelper.getClass().getDeclaredMethod("setForceShowIcon", argTypes).invoke(menuHelper, true);
} catch (Exception e) {
}
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_language, popup.getMenu());
popup.setOnMenuItemClickListener(this);
到目前为止,该图标位于菜单的左侧,但我希望它位于标题的右侧。请帮忙,有什么线索吗?
【问题讨论】:
-
喂墨菲!您正在使用内置菜单 xml 文件来弹出菜单!默认情况下,menuIcon 始终位于左侧属性,因为它们可以根据屏幕大小展开右侧的标签
-
这是你可以做的!您可以在菜单的布局文件夹中设计一个自定义布局文件!然后你得到菜单充气机并要求它取消旧菜单并在那里添加你的自定义布局! ?想要代码示例?
-
或者只是在 longPress 上弹出的 contexrMenu 有选项供您展示您想要的每一个!但如果你坚持使用 optionMenu,你必须选择我的解决方案
-
@Rizwanatta 谢谢,是的,如果你分享例子会更清楚。
标签: java android popupmenu country-codes menu-items