大概说下情况,遇到有行拼凑出来的文字,有三种不同的大小颜色的样式。 我先使用ABC三个字符分别去按照顺序设置不同大小和颜色。然后 依次将需要样式的字符串替换到A,B,C。便可以拥有三段不同样式的字符串。
` /** * <构建样式不同的总计字符串> * @param num 共X件商品 * @param price 价格 * @param yf (含运费XXX) * @return * @throw * @return SpannableStringBuilder */ private SpannableStringBuilder buildSpanForCost(String num, String price, String yf) { String content = new String("ABC"); SpannableStringBuilder builder = new SpannableStringBuilder(content);
builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_deep_gray)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 14)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_deep_gray)), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 16)), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_light_gay)), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); builder.setSpan(new AbsoluteSizeSpan(CommUtil.dip2px(getActivity(), 14)), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //记录替换到的位置到哪了 int tmp_len = 0; builder.replace(0, 1, num); tmp_len += num.length(); builder.replace(tmp_len, tmp_len+1, price); tmp_len += price.length(); builder.replace(tmp_len, tmp_len+1, yf); return builder;}
buildSpanForCost("共2件商品", " ¥1300.00 ", "(含运费XXX)")`