簡體   English   中英

Android:在運行時使TextView的文本的一部分不可點擊?

[英]Android: Make a part of TextView's text NOT-clickable at runtime?

我使用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()來刪除任何以前添加的Spans。 在這種特殊情況下,它非常簡單,因為我們要刪除我們要刪除的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);

由於某些我無法理解的原因,跨度的文檔真的很差......它們非常強大!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM