TextView 花里胡哨的用法 - SpannableStringBuilder

一个新需求,要做一个提示框,提示框中的文本,个别文本是需要有点击事件,并且要设置颜色,所以有了此文。


图示
//声明
private TextView mAgreement, thinkAgreementTv;
//搞一个 TextView
mAgreement = (TextView) findViewById(NBResFinder.getId(sContext, "id", "agreementTv"));
   /**
     * 文本中字体的处理
     */
    private void explanatoryTextInit() {
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
        // \n 换行;\r 回车 ; \u3000\u3000 文本空格
        spannableStringBuilder.append("\r\u3000\u3000过段时间我还会陆续公布一些更好玩的模型。过段时间我还会陆续公布一些更好玩的模型。\r\n\u3000\u3000接下来准备上线道路障碍物识别过段时间我还会陆续公布一些更好玩的模型。\n");

        //给 textView 中加个图
        spannableStringBuilder.setSpan(new ImageSpan(sContext, R.drawable.ico5), 19, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        ClickableSpan clickPrivacyAgreement = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(sContext,"点击了",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void updateDrawState(@NonNull TextPaint ds) {
                super.updateDrawState(ds);

                /**** 这里是对你指定的第6-10个字的处理: ****/

                //设置下划线,默认是有下划线的,false 是去掉下划线
                ds.setUnderlineText(false);

                //设置颜色,默认是蓝色,我这里设置成红色了
                ds.setColor(sContext.getResources().getColor(R.color.nb_red));

                //设置字体大小
                ds.setTextSize(50);


                //setFlags 设置:
                //设置删除线
//                ds.setFlags(TextPaint.STRIKE_THRU_TEXT_FLAG);
                //设置粗体
//                ds.setFlags(TextPaint.FAKE_BOLD_TEXT_FLAG);

                //设置粗体,也可以这样
                ds.setFakeBoldText(true);
            }
        };

        //选中第六个到第十个文字
        spannableStringBuilder.setSpan(clickPrivacyAgreement, 6, 10, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

        mAgreement.setText(spannableStringBuilder);

        //点击默认会有颜色出现,去掉点击后的颜色:
        //还可以直接写布局中,这样:android:textColorHighlight="#ffffff"
        mAgreement.setHighlightColor(Color.parseColor("#ffffff"));

        //设置光标如何移动计量的方法。这句不加的话,点击事件不生效
        mAgreement.setMovementMethod(LinkMovementMethod.getInstance());
    }

你可能感兴趣的:(TextView 花里胡哨的用法 - SpannableStringBuilder)