1. 程式人生 > >EditText程式碼設定inputType後鍵盤輸入型別變化問題

EditText程式碼設定inputType後鍵盤輸入型別變化問題

最近寫一個需求,輸入密碼的時候點選旁邊的小眼睛圖片,密碼明文密文相互切換。這個需求看似很簡單,動態的更改EditText的InputType就可以了,但是在適配的時候會遇到一些問題,比如在oppo手機上,切換的時候手機輸入法會變化,明文之後甚至可以輸入中文了,使用者體驗不是很好。

if (binding.etSetPsd.getInputType() == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
    binding.etSetPsd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    binding.ivEye1.setImageResource(R.drawable.close_eye);
} else {
    binding.etSetPsd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
    binding.ivEye1.setImageResource(R.drawable.open_eye);
}


這是通常情況下密碼明文密文的切換方法,在一些手機上是沒問題的,但是有些手機輸入法會變。

思路:先靜態設定editText的InputType為textPassword,通過getInputType得到值為129,點選edittext獲取焦點,發現鍵盤沒問題,再更改editText的InputType為textVisiblePassword,點選edittext獲取焦點,發現鍵盤同樣沒問題,那我直接在這兩個值之間切換不就行了嗎!於是

if (binding.etSetPsd.getInputType() == 129) {
                        binding.etSetPsd.setInputType(145);
                        binding.ivEye1.setImageResource(R.drawable.close_eye);
                    } else {
                        binding.etSetPsd.setInputType(129);
                        binding.ivEye1.setImageResource(R.drawable.open_eye);
                    }

問題完美解決。