如何为PopupWindow制作选项菜单?
我的应用程序有一个选项菜单,几乎可以在所有活动中使用,这是通过实施onCreateOptionsMenu()创建的。但是在一个Activity中有一个PopupWindow,当这个PopupWindow具有焦点(正常工作所需)时,点击菜单按钮不会显示选项菜单。如何为PopupWindow制作选项菜单?
PopupWindows没有onCreateOptionsMenu()函数。有没有其他方法可以将选项菜单添加到PopupWindow?
另外,有没有办法从后面的活动获取选项菜单,以显示当用户点击菜单按钮?
回答:
我通过拦截菜单键并在活动上调用openOptionsMenu()来解决此问题。这里的关键是听众:
OnKeyListener mMenuKeyListener = new OnKeyListener() { @Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_MENU) {
activity.openOptionsMenu();
return true;
} else {
return false;
}
}
};
我觉得你有这个按键侦听器添加到每个视图中PopupWindow得到它的工作,所以我写了一个函数来做到这一点:
public void setupMenuKeyListenerRecursive(View v) { if (v != null) {
try {
ViewGroup viewGroup = (ViewGroup)v;
int childCount = viewGroup.getChildCount();
for (int index = 0; index < childCount; index++) {
View child = viewGroup.getChildAt(index);
setupMenuKeyListenerRecursive(child);
}
} catch (Exception e) {
}
v.setOnKeyListener(mMenuKeyListener);
}
}
以上是 如何为PopupWindow制作选项菜单? 的全部内容, 来源链接: utcz.com/qa/257762.html