Android 在TextView中設置多個樣式多個點擊事件

類似如下圖功能:
在這裏插入圖片描述有時候我們可以用多個TextView來實現,但是沒法實現這種換行的,而且使用多個TextView性能上也有損耗,在Android中系統爲我們提供了一個解決辦法。就是使SpannableStringBuilder+ClickableSpan來實現。具體實現代碼如下:

    String str = "閱讀完整的《用戶服務協議》和《隱私政策》瞭解詳細內容";

        SpannableStringBuilder ssb = new SpannableStringBuilder();
        ssb.append(str);
        //第一個出現的位置
        final int start = str.indexOf("《");
        ssb.setSpan(new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                    //用戶服務協議點擊事件
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                //設置文件顏色
                ds.setColor(getResources().getColor(R.color.action_color));       
                // 去掉下劃線
                ds.setUnderlineText(false);
            }

        }, start, start + 8, 0);
        //最後一個出現的位置
        final int end = str.lastIndexOf("《");
        ssb.setSpan(new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                 //隱私協議點擊事件
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                //設置文件顏色
                ds.setColor(getResources().getColor(R.color.action_color));       
                // 去掉下劃線
                ds.setUnderlineText(false);
            }

        }, end, end + 6, 0);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setText(ssb, TextView.BufferType.SPANNABLE);
發佈了141 篇原創文章 · 獲贊 34 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章