Java 自定义editText字段的密码转换方法
在我的应用程序中,我有一个用于OTP输入的自定义编辑文本,我想为该视图创建一个转换方法,以便用户可以在一秒钟内看到实际输入,并用一个项目符号替换。就像在本机edittext中输入密码一样Java 自定义editText字段的密码转换方法,java,android,android-custom-view,Java,Android,Android Custom View,在我的应用程序中,我有一个用于OTP输入的自定义编辑文本,我想为该视图创建一个转换方法,以便用户可以在一秒钟内看到实际输入,并用一个项目符号替换。就像在本机edittext中输入密码一样 private class PinTransformationMethod extends PasswordTransformationMethod { private char BULLET = '\u2B24'; @Override public Char
private class PinTransformationMethod extends PasswordTransformationMethod {
private char BULLET = '\u2B24';
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private class PasswordCharSequence implements CharSequence {
private final CharSequence source;
public PasswordCharSequence(@NonNull CharSequence source) {
this.source = source;
}
@Override
public int length() {
return source.length();
}
@Override
public char charAt(int index) {
return BULLET;
}
@Override
public CharSequence subSequence(int start, int end) {
return new PasswordCharSequence(this.source.subSequence(start, end));
}
}
}
下面是我的转换方法从PasswordTransformation方法扩展而来的。它可以完美地用项目符号替换我的输入,但我无法在几秒钟内显示输入,我如何才能做到这一点?在运行时更改输入类型不起作用?在运行时更改输入类型这将是一个好主意。问题是我一直听输入,直到输入结束并将otp发送到服务器,没有按钮,因此,运行时检查不会有效。您可以添加一个处理程序,该处理程序将在更改为bulet之前等待几毫秒