效果如下:
代码如下:
@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()); }