SpannableStringBuilder使用方式与介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32320807/article/details/64905131

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(前后都包括)。

猜你喜欢

转载自blog.csdn.net/qq_32320807/article/details/64905131