在Android中EditText用于編輯文本,TextView用于顯示文本,但是有時候我們需要對其中的文本進行樣式等方面的設置。Android為我們提供了SpannableString類來對指定文本進行處理。
1) ForegroundColorSpan? ? ? ??文本顏色
~~~
private void setForegroundColorSpan() {
SpannableString spanString = new SpannableString("前景色");
ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
2) BackgroundColorSpan文本背景色?
~~~
private void setBackgroundColorSpan() {
SpannableString spanString = new SpannableString("背景色");
BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
3) StyleSpan ? ? ? ??字體樣式:粗體、斜體等
~~~
private void setStyleSpan() {
SpannableString spanString = new SpannableString("粗體斜體");
StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);
spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
4) RelativeSizeSpan ? ? ? ??相對大小
~~~
private void setRelativeFontSpan() {
SpannableString spanString = new SpannableString("字體相對大小");
spanString.setSpan(new RelativeSizeSpan(2.5f), 0, 6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
5) TypefaceSpan ? ? ? ??文本字體
~~~
private void setTypefaceSpan() {
SpannableString spanString = new SpannableString("文本字體");
spanString.setSpan(new TypefaceSpan("monospace"), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanText);
}
~~~
6) URLSpan 文本超鏈接
~~~
private void addUrlSpan() {
SpannableString spanString = new SpannableString("超鏈接");
URLSpan span = new URLSpan("http://www.baidu.com");
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
7) ImageSpan ? ? ? ? 圖片
~~~
private void addImageSpan() {
SpannableString spanString = new SpannableString(" ");
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, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
8) ClickableSpan ? ? ? ? ? ? ? ? 文本有點擊事件
~~~
private TextView textView;
textView = (TextView)this.findViewById(R.id.textView);
String text = "顯示Activity";
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Intent intent = new Intent(Main.this,OtherActivity.class);
startActivity(intent);
}
// 表示點擊整個text的長度都有效觸發這個事件
}, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
textView.setMovementMethod(LinkMovementMethod.getInstance());
~~~
9) UnderlineSpan ? ? ? ??下劃線
~~~
private void addUnderLineSpan() {
SpannableString spanString = new SpannableString("下劃線");
UnderlineSpan span = new UnderlineSpan();
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
10) StrikethroughSpan ? ? ? ??刪除線
~~~
private void addStrikeSpan() {
SpannableString spanString = new SpannableString("刪除線");
StrikethroughSpan span = new StrikethroughSpan();
spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
11) SuggestionSpan 相當于占位符
12) MaskFilterSpan 修飾效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
13) RasterizerSpan ? ? ? ??光柵效果
14) AbsoluteSizeSpan ? ? ? ??絕對大小(文本字體)
~~~
private void setAbsoluteFontSpan() {
SpannableString spannableString = new SpannableString("40號字體");
AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(40);
spannableString.setSpan(absoluteSizeSpan, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.append(spannableString);
}
~~~
15) DynamicDrawableSpan ? ?設置圖片,基于文本基線或底部對齊。
16) TextAppearanceSpan 文本外貌(包括字體、大小、樣式和顏色)
~~~
private void setTextAppearanceSpan() {
SpannableString spanString = new SpannableString("文本外貌");
TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium);
spanString.setSpan(textAppearanceSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
~~~
- 前言
- Android開發之serviceManager分析
- Android啟動之init.c文件main函數分析
- Android開發之ProcessState和IPCThreadState類分析
- Android開發之MediaPlayerService服務詳解(一)
- Android系統五大布局詳解Layout
- Android四大組件之Content Provider
- Android四大組件之Service
- Android四大組件之BroadcastReceiver
- Android系統中的消息處理Looper、Handler、Message
- Android EditText/TextView使用SpannableString顯示復合文本
- Android關鍵資源詳解
- Android常用適配器分析(如何制作簡易Launcher)
- Android常用列表控件