如何使用TransformationMethod在android系统(how to use Tran

2019-08-05 10:12发布

我想创建一个EditText它接收密码。 我想尽快,因为它是隐藏输入的字符。 所以,我用了一个TransformationMethod 。 我是新来这个话,我想下面的代码。

EditText editText = (EditText) findViewById(R.id.editText);
editText.setTransformationMethod(new PasswordTransformationMethod());


private class PasswordTransformationMethod extends Transformation implements TransformationMethod {

    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return "/";
    }

    @Override
    public void onFocusChanged(View view, CharSequence source, boolean focused, int direction, Rect previouslyFocusedRect) {
        source = getTransformation(source, view);
    }
}

然而,它抛出,

01-03 10:22:35.750: E/AndroidRuntime(2102): java.lang.IndexOutOfBoundsException

我失去了一些东西。 任何帮助将不胜感激。

Answer 1:

上述方法具有很多的错误。

所以,我分享,我使用的密码转换成点代码。

这样同一个Java文件中创建一个单独的类,

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; 
        }

        public char charAt(int index) {
            return '.'; 
        }

        public int length() {
            return mSource.length(); 
        }

        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
};

实现是这样的,

passwordEditText = (EditText) findViewById(R.id.passwordEditText);
passwordEditText.setTransformationMethod(new MyPasswordTransformationMethod());


文章来源: how to use TransformationMethod in android