gpt4 book ai didi

android - 获取 Spannable TextView 的文本大小

转载 作者:行者123 更新时间:2023-12-04 17:42:12 25 4
gpt4 key购买 nike

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

关于android - 获取 Spannable TextView 的文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952550/

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