美文网首页
Android 中软键盘的坑

Android 中软键盘的坑

作者: 人头串串 | 来源:发表于2018-12-05 14:03 被阅读0次

    做项目的时候有个需求,在有EditText输入框的界面,输入法弹出的情况下,点击界面任意空白地方隐藏输入法。

    于是我在 Activity 的 onTouchEvent() 做了如下处理:

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                //触摸屏幕空白出隐藏输入法
                ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0,
                        InputMethodManager.HIDE_NOT_ALWAYS);
    
            }
            return super.onTouchEvent(event);
        }
    
    

    虽然有输入法的情况下触摸空白区域是确实隐藏了输入法,但是这时候出现了另一个问题,在没有显示输入法的情况想触摸空白区域又弹出输入法来了,而且是不管EditText有没有焦点都会弹出来。

    于是换另一种方式隐藏输入法:

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                //触摸屏幕空白出隐藏输入法
                ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
                        .hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); //隐藏输入法
            }
            return super.onTouchEvent(event);
        }
    

    问题终于解决了。
    toggleSoftInput() 方法,是让软键盘在显示和隐藏之间切换。它是一个开关的方法,会根据当前的状态做相反的操作。

    通过以下两篇文章应该能理解Android 软键盘:
    Android 软键盘的显示和隐藏,这样操作就对了
    Android 软键盘的全面解析,让你不再怕控件被遮盖

    相关文章

      网友评论

          本文标题:Android 中软键盘的坑

          本文链接:https://www.haomeiwen.com/subject/ltoicqtx.html