软键盘输入键事件句柄
问题描述:
我想在软键盘上做一些东西输入按键。看到我的代码和下面的输出。它执行两次,但我希望它只执行一次。如何解决它?软键盘输入键事件句柄
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt = (EditText)findViewById(R.id.txt);
txt.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
Log.e("test","--------- on enter");
return false;
}
return false;
}
});
}
答
尽可能最好的方式:
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
Log.d(TAG, "enter_key_called");
}
也许应该去ACTION_UP代替,这样用户就可以取消我删除他或她的手指的事件?并为这些添加KeyEvent.KEYCODE_DPAD_CENTER。 – Kenneth
https://developer.android.com/reference/android/view/View.OnKeyListener.html:'当硬件密钥被调度到视图时调用.'。 这不适用于软键盘。 – mbonnin
在EditText视图中设置inputType =“text”,使其适用于软键盘 – SammyT