需求:在開發時遇到登錄註冊需要輸入密碼,一般爲了提高客戶體驗,都會有一個按鈕,點擊後可以查看明文密碼。
效果圖:
解決方法:
第一種:
//顯示密碼
iv_hide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iv_hide.setVisibility(View.GONE);
iv_show.setVisibility(View.VISIBLE);
//顯示密碼關鍵代碼
et_password .setTransformationMethod(HideReturnsTransformationMethod
.getInstance());
// 切換後將EditText光標置於末尾
CharSequence charSequence = et_password.getText();
if (charSequence instanceof Spannable) {
Spannable spanText = (Spannable) charSequence;
Selection.setSelection(spanText, charSequence.length());
}
}
});
//隱藏密碼
iv_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iv_show.setVisibility(View.GONE);
iv_hide.setVisibility(View.VISIBLE);
//隱藏密碼關鍵代碼
et_password .setTransformationMethod(PasswordTransformationMethod
.getInstance());
// 切換後將EditText光標置於末尾
CharSequence charSequence = et_password.getText();
if (charSequence instanceof Spannable) {
Spannable spanText = (Spannable) charSequence;
Selection.setSelection(spanText, charSequence.length());
}
}
});
第二種方法:
//顯示密碼
iv_hide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iv_hide.setVisibility(View.GONE);
iv_show.setVisibility(View.VISIBLE);
//顯示密碼方法
et_password.setInputType(1);
// 切換後將EditText光標置於末尾
CharSequence charSequence = et_password.getText();
if (charSequence instanceof Spannable) {
Spannable spanText = (Spannable) charSequence;
Selection.setSelection(spanText, charSequence.length());
}
}
});
//隱藏密碼
iv_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iv_show.setVisibility(View.GONE);
iv_hide.setVisibility(View.VISIBLE);
//隱藏密碼
et_password.setInputType(129);
// 切換後將EditText光標置於末尾
CharSequence charSequence = et_password.getText();
if (charSequence instanceof Spannable) {
Spannable spanText = (Spannable) charSequence;
Selection.setSelection(spanText, charSequence.length());
}
}
});
這兩種方法都可以實現,相比第二種可能代碼稍微簡單些,謝謝觀看!