美文网首页
Android中TextView 部分字体颜色和点击事件

Android中TextView 部分字体颜色和点击事件

作者: as_pixar | 来源:发表于2019-12-31 10:43 被阅读0次
image.png
        final String content = "2019-12-31(I LOVE CYY)!My girl friend!";
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
        spannableStringBuilder.append(content);

        final int startPos = content.indexOf("(");
        final int endPos = content.indexOf(")");

        //设置部分文字点击事件
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, content.substring(startPos, endPos + 1), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void updateDrawState(TextPaint ds) {
//                设定的是span超链接的文本颜色,而不是点击后的颜色
                ds.setColor(MainActivity.this.getResources().getColor(R.color.colorAccent));
                ds.setUnderlineText(false);    //去除超链接的下划线
                ds.clearShadowLayer();//清除阴影
            }

        };

        spannableStringBuilder.setSpan(clickableSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        //设置部分文字颜色
        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.colorAccent));
        spannableStringBuilder.setSpan(foregroundColorSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        tvAgreementContent.setHighlightColor(getResources().getColor(android.R.color.transparent));//点击后的背景颜色,Android4.0以上默认是淡绿色,低版本的是黄色
        tvAgreementContent.setText(spannableStringBuilder);
        tvAgreementContent.setMovementMethod(LinkMovementMethod.getInstance());

相关文章

网友评论

      本文标题:Android中TextView 部分字体颜色和点击事件

      本文链接:https://www.haomeiwen.com/subject/pykboctx.html