对于TextView,可跨越文本太宽

Mat*_*ers 2 android textview android-layout

我有一个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());
Run Code Online (Sandbox Code Playgroud)

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

文本在右边缘被截断

问题是文本TextView在某些行中变得太宽,因为中等字体的宽度大于原始设置的浅色字体.在TextView简单地切断与右边的文本.如何才能TextView尊重文本的正确宽度?

Mat*_*ers 5

解决它通过设置一个额外的TypefaceSpan,而不是修改ClickableSpan.

text.setSpan(clickableSpan, startIndex, endIndex, 0);
text.setSpan(new TypefaceSpan("sans-serif-medium"), startIndex, endIndex, 0);
Run Code Online (Sandbox Code Playgroud)

这使得TextView正确包装文本.