Jak*_*ton 7 android android-event actionbarsherlock
在侦听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);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,请注意您的通话中是否长按onKeyDown()
,然后使用该信息onKeyUp()
来确定最终的处理。
归档时间: |
|
查看次数: |
327 次 |
最近记录: |