获取可生成文本视图的文本大小



我有一个按钮,单击时会增加所选文本的大小。我希望它增加到一定大小,例如 36sp,然后它停止。我为此使用RelativeSizeSpantext.getTextSize()似乎返回了一个常量值,它看起来像默认/整体大小。如何获取所选文本的大小?

private void makeChanges(float size) {
    Log.d("EditText", "makeChanges Text Size: " + text.getTextSize());
    str.setSpan(new RelativeSizeSpan(size),
                    selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    text.setText(str);
}

如果你仔细观察你的代码,你会发现 RelativeSizeSpan 收到一个浮点值,它会以给定的百分比增加文本的大小。默认值以像素为单位。如果需要修改后的大小,则需要获取默认值并将其乘以float size变量。如果该因素在运行时发生变化,您可以使用以下方法访问它

以下代码是一个演示,请进行调整供您使用。它使用调试器进行测试,并显示正确的值。

    SpannableString ss = new SpannableString("some nice text goes here.");
    ss.setSpan(new RelativeSizeSpan(3.0f), 5, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    TextView tView = findViewById(R.id.textView);
    tView.setText(ss);
    // default size - before span
    int pixelsPrevious = (int) tView.getTextSize();
    // spanned text
    Spanned spanned = (Spanned) tView.getText();
    RelativeSizeSpan[] spanArray = spanned.getSpans(0, spanned.length(), RelativeSizeSpan.class);
    // you are looking for this value.
    int pixelsNew = (int) (pixelsPrevious * spanArray[0].getSizeChange());

相关内容

  • 没有找到相关文章

最新更新