美文网首页
TextView 花里胡哨的用法 - SpannableStri

TextView 花里胡哨的用法 - SpannableStri

作者: 蒙多喝醉了 | 来源:发表于2020-07-03 15:47 被阅读0次

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


    图示
    //声明
    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 花里胡哨的用法 - SpannableStri

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