对于TextView

时间:2015-07-15 21:25:29

标签: android android-layout textview

我的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));
    }
}

text get's cut off on the right edge

问题是文本在某些行中对于TextView来说太宽,因为中等字体的宽度大于原始设置的浅色字体。 TextView只会切断右边的文字。如何让TextView尊重文本的正确宽度?

1 个答案:

答案 0 :(得分:5)

通过设置额外的TypefaceSpan解决问题,而不是修改ClickableSpan

text.setSpan(clickableSpan, startIndex, endIndex, 0);
text.setSpan(new TypefaceSpan("sans-serif-medium"), startIndex, endIndex, 0);

这使TextView正确包装文本。