遇到一個奇葩需求,要記錄輸入法上一次的輸入狀態,例如上一次用切換了數字輸入,關閉後再打開輸入框時要優先彈出數字鍵盤,但是不能限制只能輸入數字;
經過一番測試,找到解決辦法:
首先是獲取當前輸入法的輸入方式(辦法比較死,沒找到更好的辦法):
//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;
}
});
以上解決方案在搜狗輸入法完美通過