Android 使用WindowManager添加视图时如何处理keyevents?
我用WindowManager添加了一个自定义视图,一切正常。 只有一个问题:我找不到在哪里捕捉按键事件,例如按下“后退”。 我在自定义视图中的方法“View.dispatchKeyEvent()”中捕获了一些事件,但不包括“BACK”或“HOME”。 有什么建议吗? 非常感谢 我的代码如下所示:Android 使用WindowManager添加视图时如何处理keyevents?,android,Android,我用WindowManager添加了一个自定义视图,一切正常。 只有一个问题:我找不到在哪里捕捉按键事件,例如按下“后退”。 我在自定义视图中的方法“View.dispatchKeyEvent()”中捕获了一些事件,但不包括“BACK”或“HOME”。 有什么建议吗? 非常感谢 我的代码如下所示: // get WindowManager WindowManager windowManager = (WindowManager) getContext() .getSystemService
// get WindowManager
WindowManager windowManager = (WindowManager) getContext()
.getSystemService(Context.WINDOW_SERVICE);
// set LayoutParams
WindowManager.LayoutParams wmparams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT);
wmparams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
wmparams.format = PixelFormat.TRANSLUCENT;
wmparams.windowAnimations = R.style.fade;
// add this view to screen
windowManager.addView(this, wmparams);
this.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// cannot get 'BACK' pressed event here
return false;
}
});
在添加到windowmanager的视图中,让我们添加以下内容
root.setOnKeyListener(this);
root.requestFocus();
root.setFocusable(true);
root.setFocusableInTouchMode(true);
我在windowmanager中进行了测试,它运行良好
FrameLayout view = new FrameLayout(getActivity()) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
// do you code
return true;
}
return super.dispatchKeyEvent(event);
}
};
不设置标志:
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
索莱维德。只需在该视图的dispatchKeyEvent()方法中捕获事件。可以显示代码吗please@Anthone对不起,伙计,时间太长了,我现在没有密码。但是很简单,只需重写dispatchKeyEvent()方法并在调用super.dispatchKeyEvent()之前编写代码。