效果如下:

代码如下:

    @Override
    protected void initView() {
        mContext=this;
        //中等字体
        int middleFontSize = (int) Utils.sp2px(mContext,18);
        //小字体
        int smallFontSize = (int) Utils.sp2px(mContext,18);
        //红色 #F65236
        int colorRed = ContextCompat.getColor(mContext, R.color._ff4902);
        //灰色 #999999
        int textColorThird = ContextCompat.getColor(mContext, R.color._6389cc);
        //灰色 #999999
        int textColor36 = ContextCompat.getColor(mContext, R.color._363636);
        ClickableSpan clickableSpan=new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(TopicWorksInformationActivity.this, "展开", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(textColor36);
                ds.setUnderlineText(false);
            }
        };

        SpannableStringBuilder spanBuilder = new SpannableStringBuilder();

        String price = "¥189";
        int start = 0;
        int end = price.length();
        spanBuilder.append(price);
        //添加字体大小样式span
        spanBuilder.setSpan(new AbsoluteSizeSpan(middleFontSize), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //添加文本颜色样式span
        spanBuilder.setSpan(new ForegroundColorSpan(colorRed), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        String priceUnit = "次/人";
        start = end;
        end += priceUnit.length();
        spanBuilder.append(priceUnit);
        spanBuilder.setSpan(new AbsoluteSizeSpan(smallFontSize), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spanBuilder.setSpan(new ForegroundColorSpan(textColor36), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        String line = " - 原价¥";
        start = end;
        end += line.length();
        spanBuilder.append(line);
        spanBuilder.setSpan(new AbsoluteSizeSpan(smallFontSize), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spanBuilder.setSpan(new ForegroundColorSpan(textColorThird), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        String originalPricePrefix = "199";
        start = end;
        end += originalPricePrefix.length();
        spanBuilder.append(originalPricePrefix);
        spanBuilder.setSpan(new AbsoluteSizeSpan(smallFontSize), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spanBuilder.setSpan(new ForegroundColorSpan(textColorThird), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //添加删除线样式span
        spanBuilder.setSpan(new StrikethroughSpan(), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        String zhankai = "  展开";
        start = end;
        end += zhankai.length();
        spanBuilder.append(zhankai);
        spanBuilder.setSpan(new AbsoluteSizeSpan(smallFontSize), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spanBuilder.setSpan(new ForegroundColorSpan(textColor36), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        spanBuilder.setSpan(clickableSpan,start,end,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);



        String kongge = " ";
        start = end;
        end += kongge.length();
        //获取一张图片
        Drawable drawable = this.getResources().getDrawable(R.mipmap.icon_skip);
        drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
        //居中对齐imageSpan
        CenterAlignImageSpan imageSpan = new CenterAlignImageSpan(drawable);
        spanBuilder.append(kongge);
        spanBuilder.setSpan(imageSpan,start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);


        //最终把SpannableStringBuilder设置给TextView
        tvSynopsis.setText(spanBuilder);
        tvSynopsis.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明

        tvSynopsis.setMovementMethod(LinkMovementMethod.getInstance());
    }

 

 

 

posted on 2020-10-21 10:02  南巷挽清风  阅读(502)  评论(0编辑  收藏  举报