欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-14 09:14:43
...

类似如下图功能:
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);
相关标签: Android踩过的坑