需求:打开 fragment 软键盘自动弹出,软键盘回车键显示“搜索”,并添加setOnKeyListener() 监听,监听“搜索”按下事件。
布局文件EditText设置:
android:focusable="true"
android:focusableInTouchMode="true"
代码:
// 弹窗软键盘
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
editText.requestFocus(); // 注意不能丢,否则“搜索”还是默认的回车,并 edittext.setOnKeyListener() 监听无效
解决监听按键事件执行两次:
原因:一个完整的按键事件由:按下(the key has been pressed down),松开(the key has been released)组成,所以监听事件判断的时候需要添加区分,否则就会执行两次。
mEtInput.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// 按下回车并松开时进行请求
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
// do something
} else {
// do other things
}
}
return false;
}
});