我使用Android.text.style.ClickableSpan
创建了一个字符串(Black
)可点击的部分(Blue | Black
):
SpannableString spannableString = new SpannableString("Blue | Black ");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
//...
}
};
ss.setSpan(clickableSpan, 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView textView = (TextView) findViewById(R.id.secondActivity_textView4);
textView.setText(spannableString);
textView.setMovementMethod(LinkMovementMethod.getInstance());
因此Black
部分字符串是可点击的。我想要的是,当用户点击Black
时,它应该Black
不可点击,Blue
(同一字符串的另一部分)可点击。
为了使Blue
可点击,我们可以在同一时间setSpan()
再次呼叫spannableString
。但是,如何才能使Black
无法点击?
答案 0 :(得分:2)
您可以致电removeSpan()
删除之前添加的任何Spans。在这种特殊情况下,它很容易,因为我们提到了我们要删除的跨度:
ClickableSpan clickableSpan = new ClickableSpan()
{
@Override
public void onClick(View view)
{
((SpannableString)textView.getText()).removeSpan(this);
}
};
另一种选择可能是迭代所有ClickableSpan
个实例并将其全部删除,例如:
SpannableString str = (SpannableString)textView.getText();
for (ClickableSpan span : str.getSpans(0, str.length(), ClickableSpan.class))
str.removeSpan(span);
由于某些我无法理解的原因,跨度的文档真的很差......它们非常强大!