android SpannableString使用详解

来源:互联网 发布:jdbc连接数据库的接口 编辑:程序博客网 时间:2024/04/27 22:46
androidlayoutbuttonimageencodingurl[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);      }                  @Override      public void onClick(View v) {          switch (v.getId()) {          case R.id.underline_btn:              addUnderLineSpan();              break;          case R.id.strike_btn:              addStrikeSpan();              break;          case R.id.style_btn:              addStyleSpan();              break;          case R.id.font_btn:              addFontSpan();              break;          case R.id.color_btn1:              addForeColorSpan();              break;          case R.id.color_btn2:              addBackColorSpan();              break;          case R.id.url_btn:              addUrlSpan();              break;          case R.id.image_btn:              addImageSpan();              break;      <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);          spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }                  /**     * 文字颜色     */      private void addForeColorSpan() {          SpannableString spanString = new SpannableString("颜色1");          ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);          spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }                  /**     * 字体大小     */      private void addFontSpan() {          SpannableString spanString = new SpannableString("36号字体");          AbsoluteSizeSpan span = new AbsoluteSizeSpan(36);          spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }                  /**     * 粗体,斜体     */      private void addStyleSpan() {          SpannableString spanString = new SpannableString("BIBI");          StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);          spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }                  /**     * 删除线     */      private void addStrikeSpan() {          SpannableString spanString = new SpannableString("删除线");          StrikethroughSpan span = new StrikethroughSpan();          spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }            /**     * 下划线     */      private void addUnderLineSpan() {          SpannableString spanString = new SpannableString("下划线");          UnderlineSpan span = new UnderlineSpan();          spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);          tv.append(spanString);      }                        /**     * 图片     */      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);      }      }  xml布局文件[html] view plaincopy    <?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_width="wrap_content"              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" />                          <Button                  android:id="@+id/url_btn"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/url" />                          <Button                  android:id="@+id/color_btn1"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/color1" />                          <Button                  android:id="@+id/color_btn2"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/color2" />                          <Button                  android:id="@+id/font_btn"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/font" />                          <Button                  android:id="@+id/style_btn"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/style" />                          <Button                  android:id="@+id/strike_btn"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/strike" />                          <Button                  android:id="@+id/underline_btn"                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="@string/underline" />          </GridLayout>                  </LinearLayout>