メニューキーをインターセプトし、アクティビティで 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);
}
}