gpt4 book ai didi

android - 拦截 PopupWindow 中的 Android 菜单按钮

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:47 24 4
gpt4 key购买 nike

我有一个不使用选项菜单的主要 Activity 。我需要实现这个行为:1. 当按下 Android 菜单按钮时,会显示一个弹出窗口2. 再次按下 Android 菜单按钮时,弹出窗口消失。

我知道如何通过重写主要 Activity 中的 onKeyDown() 来执行 #1,但不知道如何执行 #2。显示弹出窗口时,不再触发主 Activity 的 onKeyDown()。

当主 Activity 有一个打开的弹出窗口时,如何捕获 Android 菜单按钮? (在我的例子中,弹出窗口是一个带有膨胀 View 的 PopupWindow)。

顺便说一句,我试图在弹出窗口的主视图上设置一个关键监听器,但它没有被触发

    mTopView.setOnKeyListener(new View.OnKeyListener() {           
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
LogUtil.debug("*** Key: %d", keyCode);
return false;
}
});

最佳答案

回答我自己的问题。在 PopupWindow View 上调用 setFocusableInTouchMode() 可以达到目的并使监听器工作。

PopupMenu popupMenu = ...
...
popupWindow.getContentView().setFocusableInTouchMode(true);
popupMenu.getContentView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU &&
event.getRepeatCount() == 0 &&
event.getAction() == KeyEvent.ACTION_DOWN) {
// ... payload action here. e.g. popupMenu.dismiss();
return true;
}
return false;
}
});

关于android - 拦截 PopupWindow 中的 Android 菜单按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11215372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com