如何为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

回到顶部