获取可扩展TextView的文本大小

时间:2018-12-28 00:58:19

标签: android android-edittext spannable

我有一个按钮,单击该按钮可以增加所选文本的大小。我希望它增加到一定的大小,例如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);
}

1 个答案:

答案 0 :(得分:0)

如果仔细看一下代码,您会发现RelativeSizeSpan收到一个float值,该值将文本的大小增加给定的百分比。默认值以像素为单位。如果需要修改的大小,则需要获取默认值并将其乘以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());