android SpannableString使用详解

  1. [java]  view plain copy
    1. import android.app.Activity;  
    2. import android.graphics.Color;  
    3. import android.graphics.Typeface;  
    4. import android.graphics.drawable.Drawable;  
    5. import android.os.Bundle;  
    6. import android.text.Spannable;  
    7. import android.text.SpannableString;  
    8. import android.text.style.AbsoluteSizeSpan;  
    9. import android.text.style.BackgroundColorSpan;  
    10. import android.text.style.ForegroundColorSpan;  
    11. import android.text.style.ImageSpan;  
    12. import android.text.style.StrikethroughSpan;  
    13. import android.text.style.StyleSpan;  
    14. import android.text.style.URLSpan;  
    15. import android.text.style.UnderlineSpan;  
    16. import android.view.View;  
    17. import android.view.View.OnClickListener;  
    18. import android.widget.Button;  
    19. import android.widget.EditText;  
    20.   
    21.   
    22. public class SpannableStringActivity extends Activity implements  
    23. OnClickListener {  
    24.   
    25.   
    26. private EditText tv;  
    27. private Button underline_btn;  
    28. private Button strike_btn;  
    29. private Button style_btn;  
    30. private Button font_btn;  
    31. private Button color_btn1;  
    32. private Button color_btn2;  
    33. private Button url_btn;  
    34. private Button image_btn;  
    35.   
    36.   
    37. /** Called when the activity is first created. */  
    38. @Override  
    39. public void onCreate(Bundle savedInstanceState) {  
    40.     super.onCreate(savedInstanceState);  
    41.     setContentView(R.layout.main);  
    42.   
    43.   
    44.     tv = (EditText) this.findViewById(R.id.tv);  
    45.     underline_btn = (Button) this.findViewById(R.id.underline_btn);  
    46.     strike_btn = (Button) this.findViewById(R.id.strike_btn);  
    47.     style_btn = (Button) this.findViewById(R.id.style_btn);  
    48.     font_btn = (Button) this.findViewById(R.id.font_btn);  
    49.     color_btn1 = (Button) this.findViewById(R.id.color_btn1);  
    50.     color_btn2 = (Button) this.findViewById(R.id.color_btn2);  
    51.     url_btn = (Button) this.findViewById(R.id.url_btn);  
    52.     image_btn = (Button) this.findViewById(R.id.image_btn);  
    53.   
    54.   
    55.     underline_btn.setOnClickListener(this);  
    56.     strike_btn.setOnClickListener(this);  
    57.     style_btn.setOnClickListener(this);  
    58.     font_btn.setOnClickListener(this);  
    59.     color_btn1.setOnClickListener(this);  
    60.     color_btn2.setOnClickListener(this);  
    61.     url_btn.setOnClickListener(this);  
    62.     image_btn.setOnClickListener(this);  
    63. }  
    64.   
    65.   
    66. @Override  
    67. public void onClick(View v) {  
    68.     switch (v.getId()) {  
    69.     case R.id.underline_btn:  
    70.         addUnderLineSpan();  
    71.         break;  
    72.     case R.id.strike_btn:  
    73.         addStrikeSpan();  
    74.         break;  
    75.     case R.id.style_btn:  
    76.         addStyleSpan();  
    77.         break;  
    78.     case R.id.font_btn:  
    79.         addFontSpan();  
    80.         break;  
    81.     case R.id.color_btn1:  
    82.         addForeColorSpan();  
    83.         break;  
    84.     case R.id.color_btn2:  
    85.         addBackColorSpan();  
    86.         break;  
    87.     case R.id.url_btn:  
    88.         addUrlSpan();  
    89.         break;  
    90.     case R.id.image_btn:  
    91.         addImageSpan();  
    92.         break;  
    93. <SPAN style="WHITE-SPACE: pre"> </SPAN>}  
    94. }  
    95.   
    96.   
    97. /** 
    98. * 超链接 
    99. */  
    100. private void addUrlSpan() {  
    101.     SpannableString spanString = new SpannableString("超链接");  
    102.     URLSpan span = new URLSpan("tel:0123456789");  
    103.     spanString.setSpan(span, 03, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    104.     tv.append(spanString);  
    105. }  
    106.   
    107.   
    108. /** 
    109. * 文字背景颜色 
    110. */  
    111. private void addBackColorSpan() {  
    112.     SpannableString spanString = new SpannableString("颜色2");  
    113.     BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);  
    114.     spanString.setSpan(span, 03, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    115.     tv.append(spanString);  
    116. }  
    117.   
    118.   
    119. /** 
    120. * 文字颜色 
    121. */  
    122. private void addForeColorSpan() {  
    123.     SpannableString spanString = new SpannableString("颜色1");  
    124.     ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);  
    125.     spanString.setSpan(span, 03, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    126.     tv.append(spanString);  
    127. }  
    128.   
    129.   
    130. /** 
    131. * 字体大小 
    132. */  
    133. private void addFontSpan() {  
    134.     SpannableString spanString = new SpannableString("36号字体");  
    135.     AbsoluteSizeSpan span = new AbsoluteSizeSpan(36);  
    136.     spanString.setSpan(span, 05, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    137.     tv.append(spanString);  
    138. }  
    139.   
    140.   
    141. /** 
    142. * 粗体,斜体 
    143. */  
    144. private void addStyleSpan() {  
    145.     SpannableString spanString = new SpannableString("BIBI");  
    146.     StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);  
    147.     spanString.setSpan(span, 02, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    148.     tv.append(spanString);  
    149. }  
    150.   
    151.   
    152. /** 
    153. * 删除线 
    154. */  
    155. private void addStrikeSpan() {  
    156.     SpannableString spanString = new SpannableString("删除线");  
    157.     StrikethroughSpan span = new StrikethroughSpan();  
    158.     spanString.setSpan(span, 03, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    159.     tv.append(spanString);  
    160. }  
    161.   
    162. /** 
    163. * 下划线 
    164. */  
    165. private void addUnderLineSpan() {  
    166.     SpannableString spanString = new SpannableString("下划线");  
    167.     UnderlineSpan span = new UnderlineSpan();  
    168.     spanString.setSpan(span, 03, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    169.     tv.append(spanString);  
    170. }  
    171.   
    172.   
    173.   
    174. /** 
    175. * 图片 
    176. */  
    177. private void addImageSpan() {  
    178.     SpannableString spanString = new SpannableString(" ");  
    179.     Drawable d = getResources().getDrawable(R.drawable.ic_launcher);  
    180.     d.setBounds(00, d.getIntrinsicWidth(), d.getIntrinsicHeight());  
    181.     ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);  
    182.     spanString.setSpan(span, 01, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    183.     tv.append(spanString);  
    184. }  
    185. }  

    xml布局文件

    [html]  view plain copy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="fill_parent"  
    4.     android:layout_height="fill_parent"  
    5.     android:background="#ff333333"  
    6.     android:orientation="vertical" >  
    7.   
    8.   
    9.       
    10.     <EditText  
    11.         android:id="@+id/tv"  
    12.         android:layout_width="wrap_content"  
    13.         android:layout_height="wrap_content"   
    14.         android:singleLine="false"  
    15.         android:inputType="none"/>  
    16.   
    17.   
    18.     <GridLayout  
    19.         android:layout_width="wrap_content"  
    20.         android:layout_height="wrap_content"  
    21.         android:columnCount="4" >  
    22.   
    23.   
    24.         <Button  
    25.             android:id="@+id/image_btn"  
    26.             android:layout_width="wrap_content"  
    27.             android:layout_height="wrap_content"  
    28.             android:text="@string/image" />  
    29.   
    30.   
    31.         <Button  
    32.             android:id="@+id/url_btn"  
    33.             android:layout_width="wrap_content"  
    34.             android:layout_height="wrap_content"  
    35.             android:text="@string/url" />  
    36.   
    37.   
    38.         <Button  
    39.             android:id="@+id/color_btn1"  
    40.             android:layout_width="wrap_content"  
    41.             android:layout_height="wrap_content"  
    42.             android:text="@string/color1" />  
    43.   
    44.   
    45.         <Button  
    46.             android:id="@+id/color_btn2"  
    47.             android:layout_width="wrap_content"  
    48.             android:layout_height="wrap_content"  
    49.             android:text="@string/color2" />  
    50.   
    51.   
    52.         <Button  
    53.             android:id="@+id/font_btn"  
    54.             android:layout_width="wrap_content"  
    55.             android:layout_height="wrap_content"  
    56.             android:text="@string/font" />  
    57.   
    58.   
    59.         <Button  
    60.             android:id="@+id/style_btn"  
    61.             android:layout_width="wrap_content"  
    62.             android:layout_height="wrap_content"  
    63.             android:text="@string/style" />  
    64.   
    65.   
    66.         <Button  
    67.             android:id="@+id/strike_btn"  
    68.             android:layout_width="wrap_content"  
    69.             android:layout_height="wrap_content"  
    70.             android:text="@string/strike" />  
    71.   
    72.   
    73.         <Button  
    74.             android:id="@+id/underline_btn"  
    75.             android:layout_width="wrap_content"  
    76.             android:layout_height="wrap_content"  
    77.             android:text="@string/underline" />  
    78.     </GridLayout>  
    79.   
    80.   
    81. </LinearLayout>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值