我使用 Android.text.style.ClickableSpan
使字符串 (Blue | Black
) 的一部分 (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
可点击,我们可以在同一 spannableString
上再次调用 setSpan()
。但是我怎样才能使 Black
不可点击?
最佳答案
您可以调用removeSpan()
删除任何以前添加的跨度。在这种特殊情况下,这非常容易,因为我们持有对我们要删除的 Span 的引用:
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);
出于某种我无法理解的原因,span 的文档真的很差......它们非常强大!
关于Android:让 TextView 的文本的一部分在运行时不可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27221305/