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

来源:互联网 发布:哪里能找到工资数据 编辑:程序博客网 时间:2024/04/30 11:49


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 {@Overridepublic 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

0 0
原创粉丝点击