天天看點

android SpannableString使用詳解

[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>  

繼續閱讀