gpt4 book ai didi

android - 如何在android中使用TransformationMethod

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:51:08 24 4
gpt4 key购买 nike

我想创建一个接受密码的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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com