EditText程式碼設定inputType後鍵盤輸入型別變化問題
阿新 • • 發佈:2019-01-04
最近寫一個需求,輸入密碼的時候點選旁邊的小眼睛圖片,密碼明文密文相互切換。這個需求看似很簡單,動態的更改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); }
問題完美解決。