我试图用asterisk (*)符号代替EditText中有inputType作为textPassword的点。我遇到一个帖子,要求使用setTransformationMethod()并实现PasswordTransformationMethod。但那个类中的哪个方法需要实现,以及如何显示星号?还有别的办法吗?
谢谢

最佳答案

我认为你应该通过the documentation。创建PasswordTransformationMethod类,在getTransformation()方法中,只需返回一个字符串*字符,该字符串的长度与密码字段的内容相同。
我做了一些修改,提出了一个匿名类,它可以让一个字段充满*s。

public class MyPasswordTransformationMethod 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
        }
    }
};

// Call the above class using this:
text.setTransformationMethod(new MyPasswordTransformationMethod());

08-15 21:41