java – 隐藏文本的EditText宽度

我有一个自定义的EditText类.在这个EditText中,我需要找出输入的宽度.根据EditText的inputType,文本具有不同的宽度值.

例如:

final String text = "azazaz";
setText(text);

> inputType是密码,因此用户可以看到:******(例如40px)
>没有inputType,因此用户可以看到:azazaz(例如60px)

但是下面的代码将在两个选项中设置textWidth的相同值(没有inputType的文本宽度)

final Paint p = new Paint();
p.setTextSize(getTextSize());
final float textWidth = p.measureText(text);

问题:如何使用密码inputType找到文本的实际宽度值?

最佳答案 您可以尝试计算由相同数量的密码字符组成的字符串的宽度:

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);
}
点赞