问题
比如界面上有A、B两个按钮,A设置了OnKeyListener,B设置了OnClickListener。
A.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//A 的外接键盘事件
return true;
}
return false;
}
});
B.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//B 控件的点击事件
}
});
在使用外接键盘输入的时候,在第一次会回调到A上,没错。但第二次及以后,外接键盘的输入就不会在回调到onKey上了,而是B的onClick事件被响应了。
分析
B控件夺取到了A控件的焦点,比如在xml的布局中,A在B的下面
解决办法:
xml中设置B控件不获取焦点,
android:focusable="false"
碎碎念
有用就点个赞吧!
网友评论