1. 程式人生 > >TextView內容設定顯示不同的字型顏色和不同的字型大小和新增圖示

TextView內容設定顯示不同的字型顏色和不同的字型大小和新增圖示

/**
     * 設定同一個TextView中顯示不同的字型顏色和不同的字型大小
     * @param context
     * @param prescriptionName
     * @param totalMedicines
     * @return 返回值用於textView.setText(SpannableStringBuilder style)即可顯示;
     */
    private SpannableStringBuilder handleStyle(Context context, String prescriptionName, String totalMedicines) {
        SpannableStringBuilder style = new SpannableStringBuilder(prescriptionName + totalMedicines);
        //設定不同的字型顏色,可呼叫多次
        style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.title_color)), 0, prescriptionName.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
        style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.hint_text_color)), prescriptionName.length(), (prescriptionName + totalMedicines).length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        //設定不同的字型大小,可呼叫多次
        style.setSpan(new AbsoluteSizeSpan(Utils.dip2px(context, 16)), 0, prescriptionName.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        style.setSpan(new AbsoluteSizeSpan(Utils.dip2px(context, 14)), prescriptionName.length(), (prescriptionName + totalMedicines).length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        //給文字設定圖示
    Drawable myDrawable = getResources().getDrawable(R.drawable.ic_launcher);
	myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(),myDrawable.getIntrinsicHeight());
	ImageSpan span = new ImageSpan(myDrawable,ImageSpan.ALIGN_BASELINE);
    style.setSpan(imgSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return style;
    }