美文网首页
在隐藏系统软键盘时,光标也消失了的处理方法

在隐藏系统软键盘时,光标也消失了的处理方法

作者: mapleSeriesX | 来源:发表于2019-04-10 17:11 被阅读0次

    最开始直接就是用的setInputType(InputType.TYPE_NULL)方法 但是发现系统键盘是隐藏了 但是光标也不在了,通过查询发现在4.0以后需要使用另外一个方法才能显示光标 但是这个方法并没有暴露给我们,需要用到反射机制。

    // 隐藏系统键盘
        public void hideSoftInputMethod(EditText ed) {
            getWindow().setSoftInputMode(
                    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
     
            int currentVersion = android.os.Build.VERSION.SDK_INT;
            String methodName = null;
            if (currentVersion >= 16) {
                // 4.2
                methodName = "setShowSoftInputOnFocus";
            } else if (currentVersion >= 14) {
                // 4.0
                methodName = "setSoftInputShownOnFocus";
            }
     
            if (methodName == null) {
                ed.setInputType(InputType.TYPE_NULL);
            } else {
                Class<EditText> cls = EditText.class;
                Method setShowSoftInputOnFocus;
                try {
                    setShowSoftInputOnFocus = cls.getMethod(methodName,
                            boolean.class);
                    setShowSoftInputOnFocus.setAccessible(true);
                    setShowSoftInputOnFocus.invoke(ed, false);
                } catch (NoSuchMethodException e) {
                    ed.setInputType(InputType.TYPE_NULL);
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:在隐藏系统软键盘时,光标也消失了的处理方法

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