Android EditText 密码显示隐藏 - 实现密码可见性切换
在 Android 中,输入密码的文本框可以通过设置不同的输入类型来实现显示或隐藏密码。
要显示密码,可以将输入类型设置为'text',例如:
<EditText
android:id="@+id/passwordEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
要隐藏密码,可以将输入类型设置为'textPassword',同时设置“密码可见性切换”按钮,例如:
<EditText
android:id="@+id/passwordEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:drawableRight="@drawable/ic_visibility"
android:drawableTint="@color/colorPrimary"
android:drawablePadding="8dp" />
注意,上述代码中的'ic_visibility'是一个图片资源,用于显示密码可见性切换按钮,可以自行替换。同时,还需要在相应的Activity或Fragment中添加以下代码,实现密码可见性的切换:
boolean passwordVisible = false;
passwordEditText.setTransformationMethod(new PasswordTransformationMethod());
passwordEditText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_RIGHT = 2;
if (event.getAction() == MotionEvent.ACTION_UP) {
if (event.getRawX() >= (passwordEditText.getRight() - passwordEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
if (passwordVisible) {
passwordVisible = false;
passwordEditText.setTransformationMethod(new PasswordTransformationMethod());
passwordEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_visibility, 0);
} else {
passwordVisible = true;
passwordEditText.setTransformationMethod(null);
passwordEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_visibility_off, 0);
}
return true;
}
}
return false;
}
});
上述代码中的'ic_visibility_off'同样是一个图片资源,用于显示密码可见性切换按钮。通过设置OnTouchListener监听器,当用户点击切换按钮时,切换密码的可见性。
原文地址: https://www.cveoy.top/t/topic/nHru 著作权归作者所有。请勿转载和采集!