android textview 给指定字改变颜色和添加点击事件

来源:互联网 发布:阿里云微服务 编辑:程序博客网 时间:2024/05/16 18:49

使用 SpannableString :

TextView textview=new TextView(context);

String  str="指定字改变颜色和添加点击事件";

SpannableString spannableString=new SpannableString(str);

//   Spanned.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终了下标,包括起始下标
//   Spanned.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终了下标,同时包括起始下标和终了下标
//   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 从起始下标到终了下标,但都不包括起始下标和终了下标
//   Spanned.SPAN_EXCLUSIVE_INCLUSIVE 从起始下标到终了下标,包括终了下标

方法一://设置颜色

spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#999999")),start,end,Spanned.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

方法二://或者继承ClickableSpan 重写updateDrawState()方法

public class NoLineCllikcSpan extends ClickableSpan {

        public NoLineCllikcSpan() {
            super();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            /**设置颜色**/
            ds.setColor(ds.linkColor);
            /**设置无下划线**/
            ds.setUnderlineText(false);
        }

        @Override
        public void onClick(View widget) {
        }
    }

spannableString.setSpan(new NoLineCllikcSpan() {
                    @Override
                    public void onClick(View widget) {

                    /**  指定字的点击事件 */
                       
                    }
                }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);


textview.setText(spannableString);

textview.setMovementMethod(LinkMovementMethod.getInstance());//想要实现指定文字的点击事件,需要添加该方法