EditText代码设置字符过滤时,软键盘总是弹出数字键盘解决方案

    代码设置输入模式跟字符过滤的时候会有冲突,比如设置了字符过滤再设置输入模式的时候,默认会弹出数字键盘,无论怎么修改输入模式,软键盘都是数字键盘。有的手机可以切换回英文输入的还好,有的却是切不会(比如三星)。原因是因为设置这两个的时候,源码里面重置了键盘的输入模式。

    代码设置字符过滤需要设置KeyListener监听,然后重写DialerKeyListener里的getInputType和getAcceptedChars两个方法,前者方法就是设置EidtText的输入模式,即可解决总是弹出数字键盘的问题,后者则是字符过滤需要重写的类。

editText.setKeyListener(new DialerKeyListener() {
            @Override
            public int getInputType() {
                return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
            }

            @Override
            protected char[] getAcceptedChars() {
                String s = "0123456789";
                return s.toCharArray();
            }
        });

你可能感兴趣的:(android学习笔记)