我的TextView
字体为sans-serif-light
。要链接里面的一些单词,我将文本设置为Spannable
,如下所示:
final Spannable text = new SpannableString(textView.getText());
final Matcher matcher = PATTERN_TAG.matcher(text);
while (matcher.find()) {
text.setSpan(span, startIndex, endIndex, 0);
}
textView.setText(text);
textView.setMovementMethod(LinkMovementMethod.getInstance());
我申请的Span
将单词的字体设置为sans-serif-medium
,如下所示:
public abstract class ClickableTagSpan extends ClickableSpan {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
}
}
问题是文本在某些行中对于TextView
来说太宽,因为中等字体的宽度大于原始设置的浅色字体。 TextView
只会切断右边的文字。如何让TextView
尊重文本的正确宽度?
答案 0 :(得分:5)
通过设置额外的TypefaceSpan
解决问题,而不是修改ClickableSpan
。
text.setSpan(clickableSpan, startIndex, endIndex, 0);
text.setSpan(new TypefaceSpan("sans-serif-medium"), startIndex, endIndex, 0);
这使TextView
正确包装文本。