Android 輸入法優先彈出數字鍵盤或優先彈出字母鍵盤,但是不限制輸入方式

     遇到一個奇葩需求,要記錄輸入法上一次的輸入狀態,例如上一次用切換了數字輸入,關閉後再打開輸入框時要優先彈出數字鍵盤,但是不能限制只能輸入數字;

  經過一番測試,找到解決辦法:

首先是獲取當前輸入法的輸入方式(辦法比較死,沒找到更好的辦法):

//etInputType爲EditText
etInputType.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                return;
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String changeStr = s.toString();

                changeStr = changeStr.substring(start, start + count);
                if (changeStr.length() > 0) {
                    char c = changeStr.charAt(0);
                    if (Character.getType(c) == Character.OTHER_LETTER) {
                        //中文
                    } else if (Character.isDigit(c)) {
                        //數字
                    } else if (Character.isLetter(c)) {
                        //字母
                    } else {
                        //其他
                    }
                }

                return;
            }

            @Override
            public void afterTextChanged(Editable s) {
                return;
            }
        });

其次是打開時設置輸入法優先彈出

etInputType爲EditText
 etInputType.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.NONE, false) {
                @Override
//                public int getInputType() {
//                    優先彈出數字鍵盤
//                    return InputType.TYPE_CLASS_PHONE;
//                }

                public int getInputType() {
                    //優先彈出字母鍵盤
                    return InputType.TYPE_MASK_CLASS;
                }
            });

以上解決方案在搜狗輸入法完美通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章