我有一个按钮,单击时会增加所选文本的大小。我希望它增加到一定大小,例如 36sp,然后它停止。我为此使用RelativeSizeSpan
。 text.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());