SpannableStringBuilder的使用

来源:互联网 发布:编程让系统死机 编辑:程序博客网 时间:2024/05/17 07:55
package com.example.lhy.test;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.text.SpannableString;import android.text.SpannableStringBuilder;import android.text.Spanned;import android.text.TextPaint;import android.text.method.LinkMovementMethod;import android.text.style.BackgroundColorSpan;import android.text.style.CharacterStyle;import android.text.style.ClickableSpan;import android.text.style.ImageSpan;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity{    String str1="萧瑟秋风今又是,换了人间;";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate (savedInstanceState);        setContentView (R.layout.activity_main);        TextView t1= (TextView) findViewById (R.id.t1);        SpannableStringBuilder spannableString=new SpannableStringBuilder (str1);        //span表示一段文本效果,例如超链接、图像、带背景色的文本等        //设置点击事件        spannableString.setSpan (new ClickableSpan ()        {            @Override            public void onClick (View widget)            {                Toast.makeText (MainActivity.this, str1, Toast.LENGTH_SHORT).show ();            }        }, 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        //设置背景色        //SPAN_EXCLUSIVE_EXCLUSIVE在textview中意义不大,主要用于edittext        BackgroundColorSpan bs=new BackgroundColorSpan (Color.YELLOW);        spannableString.setSpan (bs,0,str1.length (),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        //继承CharacterStyle实现背景色前景色        ColorSpan colorSpan = new ColorSpan(Color.BLACK,Color.RED);        spannableString.setSpan (colorSpan, 0, 2, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);        t1.setText (spannableString);        t1.setMovementMethod (LinkMovementMethod.getInstance ());        //添加图片        SpannableString s=new SpannableString ("a");        ImageSpan imageSpan=new ImageSpan (this,R.drawable.girl);        s.setSpan (imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        t1.append (s);    }    class ColorSpan extends CharacterStyle    {        private int mTextColor;        private int mBackgroundColor;        public ColorSpan( int textColor,int backgroundColor)        {            this.mTextColor=textColor;            this.mBackgroundColor=backgroundColor;        }        @Override        public void updateDrawState (TextPaint tp)        {            tp.bgColor=mBackgroundColor;            tp.setColor (mTextColor);        }    }}
                                             
0 0