TextView內容設定顯示不同的字型顏色和不同的字型大小和新增圖示
阿新 • • 發佈:2019-02-10
/** * 設定同一個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; }