TextView部分文字变色、可点击。(微博话题 变色、点击)

来源:互联网 发布:uc手机淘宝 编辑:程序博客网 时间:2024/04/27 21:51

仿照微博话题,实现 textview 部分文字变色,且可点击。
直接看代码:

 private CharSequence setTextView(String desc,TextView tv ) {        /*正则表达式  取出 两个#之间的内容 (不包含#) */        Pattern p = Pattern.compile("#([^\\#|.]+)#");        /*android 提供的 具有强大的CharSequence 处理能力 各种区域处理*/        SpannableString ss = new SpannableString(desc);        Matcher m = p.matcher(desc);        /*由于@昵称、#话题#、http://等这些关键字是可以点击的,所以我们需要对TextView做一些处理,需要去设置它的MovementMethod*/        if (m.find()) {            // 要实现文字的点击效果,这里需要做特殊处理            tv.setMovementMethod(LinkMovementMethod.getInstance());            // 重置正则位置            m.reset();        }        /*循环找出每个复合正则的字符串,逐个处理*/        while (m.find()) {            /*取出 字符串 前后添加#*/            final String s = "#" + m.group(1) + "#";            int startIndex = m.start(1) - 1;            int endIndex = startIndex + s.length();            /*区域处理*/            ss.setSpan(new ClickableSpan() {                @Override                public void onClick(View widget) {                    Log.e("MyClickSpan", "onClick-----" + s);                    Toast.makeText(context, "您点击的内容是:" + s, Toast.LENGTH_SHORT).show();                }                @Override                public void updateDrawState(TextPaint ds) {                    //        super.updateDrawState(ds);                       //    按自己需求    重写 父类方法.                     //        字体变色                    ds.setColor(Color.parseColor("#507daf"));              //            设置下划线                    ds.setUnderlineText(false);                }            }, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        }        return ss;    }

参考:http://www.cnblogs.com/lichenwei/p/4676214.html?utm_source=tuicool&utm_medium=referral

1 0