kri*_*hna 8 passwords android android-edittext
我想创建一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,它抛出,
01-03 10:22:35.750: E/AndroidRuntime(2102): java.lang.IndexOutOfBoundsException
Run Code Online (Sandbox Code Playgroud)
我错过了什么.任何帮助将不胜感激.
上述方法有很多错误.
所以,我正在分享用于将密码转换为点的代码.
在这样的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
}
}
};
Run Code Online (Sandbox Code Playgroud)
实现是这样的,
passwordEditText = (EditText) findViewById(R.id.passwordEditText);
passwordEditText.setTransformationMethod(new MyPasswordTransformationMethod());
Run Code Online (Sandbox Code Playgroud)