Androidで同じTextViewで異なるサイズのフォントを設定

3035 ワード

今日需要があって、価格の第1の字は后のより大きくて、前にspannableで异なるアルファベットの色を设定することに出会ったことがあって、だから异なる大きさを设定することができるべきだと思って、今基本的な使い方を整理して便利になってから使います.
 price = Tools.formatToSepara(item.price);
 if (TextUtils.isEmpty(price))
    return;
 price = "¥ " + price + " ";
  Spannable sp = new SpannableString(price);
 sp.setSpan(new AbsoluteSizeSpan(12, true), 0, 2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
 sp.setSpan(new AbsoluteSizeSpan(16, true), 2, 3, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
 sp.setSpan(new AbsoluteSizeSpan(12, true), 3, price.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
 tv_price.setText(sp);

AbsoluteSizeSpan(int size,boolean dip):パラメータsizeは、sizeの指定画素値でテキストサイズを設定し、パラメータdipがtrueの場合はsizeで指定したdipを値としてテキストサイズを設定します.
ForegroundColorSpan(int color):パラメータcolor、フォント色.ForegroundColorSpan(Parcel src):パラメータsrc、フォント色情報を含むパッケージクラス
BackgroundColorSpan(int color):パラメータcolor、カラー値.BackgroundColorSpan(Parcel src):パラメータsrc、色値情報を含むパッケージクラス
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE-両端startとendが存在する端点Spannedは含まれません.SPAN_EXCLUSIVE_INCLUSIVE-エンドstartは含まれませんが、endが存在するエンドポイントSpannedが含まれます.SPAN_INCLUSIVE_EXCLUSIVE-両端startが含まれますが、endが存在する端点Spannedは含まれません.SPAN_INCLUSIVE_INCLUSIVE-両端startとendが存在するエンドポイントを含む
ついでに価格を記録して3桁ごとにカンマを付けます.
public static String formatToSepara(String data) {
        try {
            float value = Float.parseFloat(data);
            DecimalFormat df = new DecimalFormat("#,###");
            return df.format(value);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }