Fragment 中软键盘问题

需求:打开 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;
            }
        });
    原文作者:不知名bzm
    原文地址: https://www.jianshu.com/p/57c688d07436
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞