應用文本點擊超鏈接的實現方式-ClickSpan(評論回覆列表,協議同意等)

要實現的效果

我們先看一下要實現的效果,就是一個非常常規的文本超鏈接
在這裏插入圖片描述
或者類似微博裏評論列表:
在這裏插入圖片描述
我們在點擊上邊藍色字體的時候都要跳轉對應的頁面。

實現方式

可能我們第一時間想到的方案就是使用Span去做,沒錯,這裏我們就用ClickSpan去實現這樣一個效果。

首先我們要自定義一個ClickSpan:

    public SpannableString setClickableSpanContent(String item) {
        final SpannableString string = new SpannableString(item);
        ClickableSpan span = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                //處理你的點擊事件
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                // 設置顯示的內容文本顏色
                ds.setColor(getResources().getColor(R.color.base_blue));
                ds.setUnderlineText(false);
            }
        };
        string.setSpan(span, 0, string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return string;
    }

然後,就可以使用這個span了,以上邊第一個圖爲例,那麼可能代碼會是這樣:

        TextView userTerms = findViewById(R.id.terms_text);
        SpannableStringBuilder builder = new SpannableStringBuilder();
        builder.append("我已閱讀");
        builder.append(setClickableSpanContent("《未成年人隱私權保護政策》"));
        userTerms.setText(builder);
        userTerms.setMovementMethod(LinkMovementMethod.getInstance());

這樣就實現了上邊的需求。

當然這個是最簡單的,下邊微博列表那個稍微複雜一點,不是說實現效果複雜,而是業務邏輯稍微複雜一點,需要回復者和被回覆者的UserBean,然後回覆的評論等內容,這裏就不再多說了!整體還是比較簡單的!

問題

可能有些手機這個span的點擊默認帶有按下時的背景顏色,可能影響美觀,那麼怎麼去掉這個點擊時的背景顏色呢,很簡單:

userTerms.setHighlightColor(getResources().getColor(android.R.color.transparent));

設置textview的highlightColor爲透明就可以了~

延伸

這種比較簡單,那麼類似鬥魚這種直播的平臺,別人發送的彈幕列表,一個人帶有好多主播牌子的,還有個人等級的這種如何實現,我們下一篇再去了解!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章