我正在尝试在RecyclerView内的文本视图中使字符串数组可单独单击(每个标记将传递不同的数据,这些数据是从加载时从api获取的)。我在SpannableStringBuilder
方法中使用bindView
创建了字符串,如下所示。
fun bindView(link: PostsModel)
val tags = link.topics
var spans = SpannableStringBuilder()
for (tag in tags) {
val string = SpannableString(tag.name)
string.setSpan(ClickableTags(tag.name), 0, tag.name.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
spans.append(string)
}
}
然后将其设置为文本视图。
view.headerTags.setText(spans, TextView.BufferType.SPANNABLE)
如果我println()
和spans
的内容是view.headerTags.text
,则可以看到它包含一串标记,因此它似乎可以正常工作。但是,在应用程序中进行测试时,它不会出现在文本视图中。
如果我设置view.headerTags.text = "Tags should appear here"
,它可以工作,所以我不确定文本视图是否有问题。
看不出为什么它不会出现,特别是如果控制台正在打印出文本视图的内容时?谁能让我知道我在这里可能会想念什么?
答案 0 :(得分:0)
请使用
Spannable word2 = new SpannableString("By signing in, I agree to The xxxxx\nxxxxxxx Terms of Service and Privacy Policy.");
word2.setSpan(clickableSpan, 44, 60, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
word2.setSpan(clickableSpan1, 65, 80, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(word2);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(Color.TRANSPARENT);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Intent intent = new Intent(SignInActivity.this, ReadTermsOfServiceActivity.class);
intent.putExtra("FROM", "termsservices");
startActivity(intent);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};