SpannableStringBuilder使用方式与介绍

SpannableStringBuilder使用方式

安卓开发者我们通常会遇到一行文字里面部分文字的大小,颜色不同,部门文字还有链接,如果用TextView一个个拼接显的尤其笨拙,这个时候我们就需要SpannableStringBuilder来帮我们解决这个问题:

首先我们想要显示如下的效果我们应该怎么实现呢:



直接上代码:

   private void initTipText() {
        SpannableStringBuilder span = new SpannableStringBuilder();
        span.append("同意");
        int length = span.length();
        span.append("《App服务协议》");
        span.setSpan(new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(getResources().getColor(R.color.base_color_A));
            }

            @Override
            public void onClick(View widget) {
                Intent intent = new Intent(LoginActivity.this, WebViewActivity.class);
                intent.putExtra("title", "App服务协议");
                intent.putExtra("url", LinkManager.getInstance().getAgreementLink());
                startActivity(intent);
            }
        }, length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        span.append("、");
        length = span.length();
        span.append("《隐私协议》");
        span.setSpan(new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(getResources().getColor(R.color.base_color_A));
            }

            @Override
            public void onClick(View widget) {
                Intent intent = new Intent(LoginActivity.this, WebViewActivity.class);
                intent.putExtra("title", "隐私协议");
                intent.putExtra("url", LinkManager.getInstance().getPrivacyLink());
                startActivity(intent);
            }
        }, length, span.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        mTipText.setMovementMethod(LinkMovementMethod.getInstance());
        mTipText.setText(span);
    }

mTipText.setMovementMethod(LinkMovementMethod.getInstance());

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值