很多應用都是顯示與隱藏密碼的功能。
之前的項目都沒這個功能要求,也沒有專門研究這個。最近項目有加這個功能,我這里也剛好整理一下。
我的思路是設置EditText的InputType。代碼如下:

if (mPasswordVisible) { //設置EditText的密碼為可見的 edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); } else { //設置密碼為隱藏的 edtPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); }
運行代碼,可以正常顯示隱藏密碼。
雖然我實現了這個功能,我還是很好奇別人是怎么實現這個功能的。
上網搜索一下,發現大部分人是用以下方法:

if (mPasswordVisible) { //設置EditText的密碼為可見的 edtPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } else { //設置密碼為隱藏的 edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance()); }
運行代碼,同樣可以正常顯示隱藏密碼。
以上兩種方法都能實現這個功能,不過第二個方法太陌生了。。。
以上,還有一個問題,切換顯隱后,光標會跳到最前面,為了解決這個問題,需要加上以下代碼:

edtPassword.setSelection(edtPassword.getText().length());
完美解決問題。