Android小感悟-重写textview组件感悟

虽然Android为我们提供了大量的组件,但是有时候我们还是显得不够用必要时还是要重写逐渐,这篇就是要记下我重写TextView的感悟

我的目的是让textview把显示内容中用#好括住和@到空格的部分变为蓝色

首先定义一个WeiboTextView类,我们要是textview中的文字变色要是用的类是android.text.

public class WeiboTextView extends TextView {



    public WeiboTextView(Context context) {

        super(context);

        // TODO Auto-generated constructor stub

    }



    public WeiboTextView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }



    public WeiboTextView(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);

    }



    public void setTextHightLight() {

        

        String text = (String) this.getText();

        SpannableStringBuilder spannable = new SpannableStringBuilder(text);

        // 用于可变字符

        //储存话题的“#”位置和用户的"@"与空格位置

        //查找#和@和空格的位置

        for(int i=0;i<text.length();i++)

        {

            int start = text.indexOf("#",i);

            int end = text.indexOf("#",start+1);

            if(start!=-1&&end!=-1)

            {

                spannable.setSpan(new ForegroundColorSpan(Color.BLUE), start, end+1,

                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

                i = end;

            }

        }

        for(int i =0;i<text.length();i++)

        {

            int start = text.indexOf("@",i);

            int end = text.indexOf(" ",start+1);

            if(start!=-1&&end!=-1)

            {

                spannable.setSpan(new ForegroundColorSpan(Color.BLUE), start, end+1, 

                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

                i = end;

            }

        }



    

        setText(spannable);

    }

}

你可能感兴趣的:(textview)