Android 在TextView中设置多个样式多个点击事件

类似如下图功能:
Android 在TextView中设置多个样式多个点击事件_第1张图片有时候我们可以用多个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);

你可能感兴趣的:(Android踩过的坑)