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