大概說下狀況,遇到有行拼湊出來的文字,有三種不一樣的大小顏色的樣式。 我先使用ABC三個字符分別去按照順序設置不一樣大小和顏色。而後 依次將須要樣式的字符串替換到A,B,C。即可以擁有三段不一樣樣式的字符串。ui
` /** * <構建樣式不一樣的總計字符串> * @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);.net
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)")`code