gpt4 book ai didi

android - 区分常规菜单 KeyEvent 和 IME 打开

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

在监听 ActionBarSherlock 中的关键事件以便在 ICS 之前的设备上显示溢出菜单时,我遇到了一个有趣的问题。似乎我无法区分简单的按键与用户长按菜单键以显示 IME 的情况。两个 KeyEvent 实例完全相同,看起来像这样:

是否有直接的方法来区分这两个不同的事件?

最佳答案

嗯……onLongKeyPress() 似乎不适用于 KEYCODE_MENU。真烦人。

这似乎适用于 Nexus S (4.0.3) 和 Nexus One (2.3.6):

public class MenuKeyDetectorActivity extends Activity {
boolean wasLongPress=false;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
wasLongPress=wasLongPress | event.isLongPress();
}

return(false);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
Log.w("MKD", String.format("wasLongPress: %b", wasLongPress));
wasLongPress=false;
}

return(false);
}
}

基本上,在您的 onKeyDown() 调用中注意它是否是长按,然后在 onKeyUp() 中使用该信息来确定最终处置。

关于android - 区分常规菜单 KeyEvent 和 IME 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9930890/

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