常见的app登录页面, 会有选项 “显示密码”,
当点击时显示或隐藏 密码输入框中的内容,这个功能如何实现呢,用下面的方式很简单的实现:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}else {
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
1. HideReturnsTransformationMethod 和 PasswordTransformationMethod
((CheckBox) findViewById(R.id.check)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}else {
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
注:其中 R.id.check 是 “显示密码” 的Checkbox , editText 是密码输入框 EditText
2. InputType.TYPE_TEXT_VARITION_VISIBLE_PASSWORD 和 InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD
((CheckBox) findViewById(R.id.check2)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}else {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}else {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
注: 描述 同 1
其中发现第一个方法较第二个方法更好,因为第二个方法会发现 editText 的内容会挤在一起。丑丑的。。
看第三张图就知道了。
所以建议用第一种方式 == , 下班回家了。