[java] view
plaincopy
import android.app.activity;
import android.graphics.color;
import android.graphics.typeface;
import android.graphics.drawable.drawable;
import android.os.bundle;
import android.text.spannable;
import android.text.spannablestring;
import android.text.style.absolutesizespan;
import android.text.style.backgroundcolorspan;
import android.text.style.foregroundcolorspan;
import android.text.style.imagespan;
import android.text.style.strikethroughspan;
import android.text.style.stylespan;
import android.text.style.urlspan;
import android.text.style.underlinespan;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.edittext;
public class spannablestringactivity extends activity implements
onclicklistener {
private edittext tv;
private button underline_btn;
private button strike_btn;
private button style_btn;
private button font_btn;
private button color_btn1;
private button color_btn2;
private button url_btn;
private button image_btn;
/** called when the activity is first created. */
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
tv = (edittext) this.findviewbyid(r.id.tv);
underline_btn = (button) this.findviewbyid(r.id.underline_btn);
strike_btn = (button) this.findviewbyid(r.id.strike_btn);
style_btn = (button) this.findviewbyid(r.id.style_btn);
font_btn = (button) this.findviewbyid(r.id.font_btn);
color_btn1 = (button) this.findviewbyid(r.id.color_btn1);
color_btn2 = (button) this.findviewbyid(r.id.color_btn2);
url_btn = (button) this.findviewbyid(r.id.url_btn);
image_btn = (button) this.findviewbyid(r.id.image_btn);
underline_btn.setonclicklistener(this);
strike_btn.setonclicklistener(this);
style_btn.setonclicklistener(this);
font_btn.setonclicklistener(this);
color_btn1.setonclicklistener(this);
color_btn2.setonclicklistener(this);
url_btn.setonclicklistener(this);
image_btn.setonclicklistener(this);
}
public void onclick(view v) {
switch (v.getid()) {
case r.id.underline_btn:
addunderlinespan();
break;
case r.id.strike_btn:
addstrikespan();
case r.id.style_btn:
addstylespan();
case r.id.font_btn:
addfontspan();
case r.id.color_btn1:
addforecolorspan();
case r.id.color_btn2:
addbackcolorspan();
case r.id.url_btn:
addurlspan();
case r.id.image_btn:
addimagespan();
<span style="white-space:pre"> </span>}
/**
* 超連結
*/
private void addurlspan() {
spannablestring spanstring = new spannablestring("超連結");
urlspan span = new urlspan("tel:0123456789");
spanstring.setspan(span, 0, 3, spannable.span_exclusive_exclusive);
tv.append(spanstring);
* 文字背景顔色
private void addbackcolorspan() {
spannablestring spanstring = new spannablestring("顔色2");
backgroundcolorspan span = new backgroundcolorspan(color.yellow);
* 文字顔色
private void addforecolorspan() {
spannablestring spanstring = new spannablestring("顔色1");
foregroundcolorspan span = new foregroundcolorspan(color.blue);
* 字型大小
private void addfontspan() {
spannablestring spanstring = new spannablestring("36号字型");
absolutesizespan span = new absolutesizespan(36);
spanstring.setspan(span, 0, 5, spannable.span_exclusive_exclusive);
* 粗體,斜體
private void addstylespan() {
spannablestring spanstring = new spannablestring("bibi");
stylespan span = new stylespan(typeface.bold_italic);
spanstring.setspan(span, 0, 2, spannable.span_exclusive_exclusive);
* 删除線
private void addstrikespan() {
spannablestring spanstring = new spannablestring("删除線");
strikethroughspan span = new strikethroughspan();
* 下劃線
private void addunderlinespan() {
spannablestring spanstring = new spannablestring("下劃線");
underlinespan span = new underlinespan();
* 圖檔
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);
xml布局檔案
[html] view
<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff333333"
android:orientation="vertical" >
<edittext
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleline="false"
android:inputtype="none"/>
<gridlayout
android:layout_height="wrap_content"
android:columncount="4" >
<button
android:id="@+id/image_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/image" />
android:id="@+id/url_btn"
android:text="@string/url" />
android:id="@+id/color_btn1"
android:text="@string/color1" />
android:id="@+id/color_btn2"
android:text="@string/color2" />
android:id="@+id/font_btn"
android:text="@string/font" />
android:id="@+id/style_btn"
android:text="@string/style" />
android:id="@+id/strike_btn"
android:text="@string/strike" />
android:id="@+id/underline_btn"
android:text="@string/underline" />
</gridlayout>
</linearlayout>