Android SpannableString 文字中设置多个片段颜色

文字

恭喜y******x成功解冻红包,200元微信到账成功     恭喜x******9成功解冻红包,200元微信到账成功     恭喜j******4成功解冻红包,200元微信到账成功     恭喜5******n成功解冻红包,200元微信到账成功     恭喜9******s成功解冻红包,200元微信到账成功     恭喜a******2成功解冻红包,200元微信到账成功     恭喜3******4成功解冻红包,200元微信到账成功     恭喜c******w成功解冻红包,200元微信到账成功     恭喜0******k成功解冻红包,200元微信到账成功     恭喜7******6成功解冻红包,200元微信到账成功     恭喜4******j成功解冻红包,200元微信到账成功     

代码

    private void initMarquee() {
        if (this._TextViewMarquee != null) {
            StringBuilder sb = new StringBuilder();
            int count = 10;
            List<String> names = new ArrayList<>();
            for (int i = 0; i <= count; i++) {
                String name = DesensitizationUtils.getShowName(CommonUtil.genUid());
                names.add(name);
                sb.append(String.format("恭喜%s成功解冻红包,200元微信到账成功     ", name));
            }
            String text = sb.toString();
            SpannableString builder = new SpannableString(text);
            Log.e(TAG, "initMarquee: text: "+text );
            int latestIndex = 0;

            ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#ff241e"));
            int flag = SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE;
            for (int i = 0; i < names.size(); i++) {
                String name = names.get(i);
                int start = text.indexOf(name);
                int end = start + name.length();

                int start1 = text.indexOf("200元", latestIndex);
                int end1 = start1 + "200元".length();
                latestIndex = end1;
                builder.setSpan(CharacterStyle.wrap(foregroundColorSpan),start,end,flag);
                builder.setSpan(CharacterStyle.wrap(foregroundColorSpan),start1,end1,flag);
            }

            this._TextViewMarquee.setVisibility(View.VISIBLE);
            this._TextViewMarquee.setText(builder);
//            this._TextViewMarquee.setMovementMethod(LinkMovementMethod.getInstance());
//            this._TextViewMarquee.setText(text);
            // this.mTvMarquee.setFocusable(true);
            // this.mTvMarquee.setFocusableInTouchMode(true);
            this._TextViewMarquee.setSelected(true);
            // this.mTvMarquee.requestFocus();
            // this.mTvMarquee.requestFocusFromTouch();


        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值