您的位置:首页 > 移动开发 > Android开发

EditText 动态切换密码 更改为"*"

2015-07-07 15:23 513 查看
if (!b) {
//系统的PasswordTransformationMethod方法是显示 "·"
//	edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
//自定义AsteriskPasswordTransformationMethod类,显示 "*"
edittext.setTransformationMethod(new AsteriskPasswordTransformationMethod());
} else {
edittext.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
edittext.postInvalidate();
//切换后将EditText光标置于末尾
CharSequence charSequence = edittext.getText();
if (charSequence instanceof Spannable) {
Spannable spanText = (Spannable) charSequence;
Selection.setSelection(spanText, charSequence.length());
}


自定义的 AsteriskPasswordTransformationMethod 类

public class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}

private class PasswordCharSequence implements CharSequence {
private CharSequence mSource;
public PasswordCharSequence(CharSequence source) {
mSource = source; // Store char sequence
}
public char charAt(int index) {
return '*'; // This is the important part
}
public int length() {
return mSource.length(); // Return default
}
public CharSequence subSequence(int start, int end) {
return mSource.subSequence(start, end); // Return default
}
}
};


来自stackoverflow 网友的方法,很好用。
http://stackoverflow.com/questions/14051962/change-edittext-password-mask-character-to-asterisk
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android