作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想创建一个接受密码的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
我错过了一些东西。任何帮助将不胜感激。
最佳答案
上面的方法有很多错误。
因此,我正在分享我用来将密码转换为点的代码。
像这样在同一个 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());
关于android - 如何在android中使用TransformationMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137184/
我是一名优秀的程序员,十分优秀!