Android 弹出菜单未加载菜单
Android popup menu is not loading menu
在我的 android 应用程序中,我有一个菜单选项,当设备具有专用的硬件菜单选项时,该选项可以使用。对于另一台设备,我没有专用的菜单按钮,所以我尝试添加一个按钮,然后单击该按钮,弹出窗口将显示菜单,弹出窗口正在运行但不显示选项,进一步说明如何在所选上工作弹出选项。
我的按钮布局如下:
<ImageButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
这是我显示弹出窗口的代码:
public boolean showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.emailmenu, popup.getMenu());
popup.show();
return true;
}
这是我的 option
代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/bluebutton" android:icon="@drawable/icon_blue_btn"
android:title="" />
<item android:id="@+id/zephyr" android:icon="@drawable/icon_zephyrme"
android:title="" />
<item android:id="@+id/skype" android:icon="@drawable/icon_skype"
android:title="" />
</menu>
我已经准备好这个 onCreateOptionsMenu() 来触发专用菜单键的选项。如何通过弹出窗口使其工作。
像这样尝试
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(MainActivity.this, SecounActivity.class));
return true;
}
});
popup.show();
如果您想显示图标而不是标题,请像下面这样创建您的PopupMenu
方法setForceShowIcon(menu);
将强制PopMenu
显示图标。
你也可以有带图标的文字。
private void showPopupMenu(){
PopupMenu menu=new PopupMenu(this,anchorView);
menu.getMenuInflater().inflate(R.menu.popup_menu,menu.getMenu());
setForceShowIcon(menu);
menu.setOnMenuItemClickListener(menuClickListner);
menu.show();
}
public static void setForceShowIcon(PopupMenu popupMenu) {
try {
Field[] fields = popupMenu.getClass().getDeclaredFields();
for (Field field : fields) {
if ("mPopup".equals(field.getName())) {
field.setAccessible(true);
Object menuPopupHelper = field.get(popupMenu);
Class<?> classPopupHelper = Class.forName(menuPopupHelper
.getClass().getName());
Method setForceIcons = classPopupHelper.getMethod(
"setForceShowIcon", boolean.class);
setForceIcons.invoke(menuPopupHelper, true);
break;
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
//This is Menu click listner
PopupMenu.OnMenuItemClickListener menuClickListner = new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.some_id1:
//actions here
break;
case R.id.some_id2:
//actions here..
break;
case R.id.some_id3:
break;
}
return false;
}
};
希望对您有所帮助!
在我的 android 应用程序中,我有一个菜单选项,当设备具有专用的硬件菜单选项时,该选项可以使用。对于另一台设备,我没有专用的菜单按钮,所以我尝试添加一个按钮,然后单击该按钮,弹出窗口将显示菜单,弹出窗口正在运行但不显示选项,进一步说明如何在所选上工作弹出选项。
我的按钮布局如下:
<ImageButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_overflow_holo_dark"
android:contentDescription="@string/descr_overflow_button"
android:onClick="showPopup" />
这是我显示弹出窗口的代码:
public boolean showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.emailmenu, popup.getMenu());
popup.show();
return true;
}
这是我的 option
代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/bluebutton" android:icon="@drawable/icon_blue_btn"
android:title="" />
<item android:id="@+id/zephyr" android:icon="@drawable/icon_zephyrme"
android:title="" />
<item android:id="@+id/skype" android:icon="@drawable/icon_skype"
android:title="" />
</menu>
我已经准备好这个 onCreateOptionsMenu() 来触发专用菜单键的选项。如何通过弹出窗口使其工作。
像这样尝试
PopupMenu popup = new PopupMenu(MainActivity.this, button1);
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
startActivity(new Intent(MainActivity.this, SecounActivity.class));
return true;
}
});
popup.show();
如果您想显示图标而不是标题,请像下面这样创建您的PopupMenu
方法setForceShowIcon(menu);
将强制PopMenu
显示图标。
你也可以有带图标的文字。
private void showPopupMenu(){
PopupMenu menu=new PopupMenu(this,anchorView);
menu.getMenuInflater().inflate(R.menu.popup_menu,menu.getMenu());
setForceShowIcon(menu);
menu.setOnMenuItemClickListener(menuClickListner);
menu.show();
}
public static void setForceShowIcon(PopupMenu popupMenu) {
try {
Field[] fields = popupMenu.getClass().getDeclaredFields();
for (Field field : fields) {
if ("mPopup".equals(field.getName())) {
field.setAccessible(true);
Object menuPopupHelper = field.get(popupMenu);
Class<?> classPopupHelper = Class.forName(menuPopupHelper
.getClass().getName());
Method setForceIcons = classPopupHelper.getMethod(
"setForceShowIcon", boolean.class);
setForceIcons.invoke(menuPopupHelper, true);
break;
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
//This is Menu click listner
PopupMenu.OnMenuItemClickListener menuClickListner = new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.some_id1:
//actions here
break;
case R.id.some_id2:
//actions here..
break;
case R.id.some_id3:
break;
}
return false;
}
};
希望对您有所帮助!