gpt4 book ai didi

Android:让 TextView 的文本的一部分在运行时不可点击?

转载 作者:太空狗 更新时间:2023-10-29 13:22:13 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com