转载请标明出处。
android文本框部分文字点击事件。
String text1 = "这是个例子";
String text2 = "点击的文字";
SpannableString spannableString = new SpannableString(text1+text2);
//设置点击事件 参数一:事件 参数二: 事件开始的文字的索引 参数三:设置事件文字的结束索引 参数四:一个标记
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
//这里写你事件要干的事情
}
@Override
public void updateDrawState(TextPaint ds) {
// TODO Auto-generated method stub
ds.setColor(Color.RED); //点击的文字的颜色
ds.setUnderlineText(false); //是否有下划线
}
}, text1.length(), text1.length()+text2.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
说明:参数四:一个标记
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,这是在 setSpan 时需要指定的 flag,它的意义我试了很久也没试出来,睡个觉,今天早上才突然有点想法,试之,果然。它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。分别有 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。链接博客:http://aichixihongshi.iteye.com/blog/1207503
然后:
TextView text = (TextView) view.findViewById(R.id.text);
text.setText(spannableString);
text.setMovementMethod(LinkMovementMethod.getInstance());//给txetview加入了链接的属性
text.setFocusable(false);//焦点设为false
text.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明,否则会一直出现高亮,(我见到的是绿色)