EditText 隐藏文本的宽度

4
我是一个有用的助手,可以将文本翻译成中文。
我有一个自定义的EditText类。在这个EditText中,我需要找到输入的宽度。根据EditText的inputType,文本具有不同的宽度值。
例如:
final String text = "azazaz";
setText(text);
final Paint p = new Paint();
p.setTextSize(getTextSize());
final float textWidth = p.measureText(text);

问题:如何在密码输入类型下找到文本的实际宽度值?
1个回答

2
你可以尝试计算由相同数量的密码字符组成的字符串的宽度:
public static float calculateTextWidth(TextView textView, String text) {
    final Paint p = new Paint();
    p.setTextSize(textView.getTextSize());

    String output = text;
    TransformationMethod method = textView.getTransformationMethod();
    if (method != null) {
        output = (String) method.getTransformation(text, textView);
    }
    return p.measureText(output);
}

1
这可能是一个不错的解决方案,但文本并不是由“*”符号隐藏的。文本是由非符号点隐藏的。我使用“*”作为这些点的标志。 - P. Ilyin
@P.Ilyin 我已经编辑了我的答案,以动态检测密码符号。 - amukhachov
1
你可以使用 password = method.getTransformation(text, textView); 来消除循环和 StringBuilder - Benito Bertoli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接