將TextView的字型設定為大小不一
阿新 • • 發佈:2019-01-29
SpannableStringBuilder text= new SpannableStringBuilder("litter"); text.setSpan(new AbsoluteSizeSpan(60), 0, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); SpannableStringBuilder text1= new SpannableStringBuilder("bigger"); text1.setSpan(new AbsoluteSizeSpan(100), 0, text1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TextView testTextView = (TextView) findViewById(R.id.testTextView); testTextView.setText(text.append(text1));
備註:各種Span設定
在前面的一個小示例,大家應該也可以看出,要應用一個Span總共分三步:
1、構造String
2、構造Span
3、利用SetSpan()對指定範圍的String應用這個Span
1、字型顏色設定(ForegroundColorSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格"
- //再構造一個改變字型顏色的Span
- ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
- //將這個Span應用於指定範圍的字型
- spanString.setSpan(span, 1, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- //設定給EditText顯示出來
- editText.setText(spanString);
2、字型背景顏色(BackgroundColorSpan)
- SpannableString spanString = new SpannableString(
- BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
- spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- editText.setText(spanString);
3、字型大小(AbsoluteSizeSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格");
- AbsoluteSizeSpan span = new AbsoluteSizeSpan(16);
- spanString.setSpan(span, 2, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
- editText.setText(spanString);
4、粗體、斜體(StyleSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格");
- StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);
- spanString.setSpan(span, 1, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- editText.setText(spanString);
5、刪除線(StrikethroughSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格");
- StrikethroughSpan span = new StrikethroughSpan();
- spanString.setSpan(span, 2, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- editText.setText(spanString);
6、下劃線(UnderlineSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格");
- UnderlineSpan span = new UnderlineSpan();
- spanString.setSpan(span, 1, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- editText.setText(spanString);
7、圖片置換(ImageSpan)
- SpannableString spanString = new SpannableString("歡迎光臨Harvic的部落格");
- Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
- d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
- ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
- spanString.setSpan(span, 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- editText.setText(spanString);
這個函式的不同之處在於,前幾都是在原來文字的基礎上加上特效,而這裡卻是利用圖片將文字替換。如果遇到不支援顯示圖片的函式,比如前一篇中的canvas繪圖。就會退化成String,即以原來的String字串來顯示。