我正在尝试添加textview
的超链接,这是我的代码..
if (hyperLinks.size()>0){
SpannableString text = new SpannableString(postContent);
for (int i = 0; i <hyperLinks.size() ; i++) {
int finalI = i;
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View view) {
ProfileActivity.start(PostActivity.this,hyperLinks.get(finalI).getId());
}
};
text.setSpan(clickableSpan, hyperLinks.get(i).getStart(), hyperLinks.get(i).getStart()
, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
// make our ClickableSpans and URLSpans work
postContentTv.setMovementMethod(LinkMovementMethod.getInstance());
postContentTv.setText(text, TextView.BufferType.SPANNABLE);
postContentTv.setClickable(true);
}
不起作用,在Texrview中既没有点击也没有更改颜色 我的代码有什么问题?
答案 0 :(得分:1)
可点击区域的开始和结束完全相同,即hyperLinks.get(i).getStart()
,因此没有可点击的区域。
问题在于这一行。
text.setSpan(clickableSpan,hyperLinks.get(i).getStart(),hyperLinks.get(i).getStart(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
第二个hyperLinks.get(i).getStart()
(上面代码行中的第三个参数)应该类似于hyperLinks.get(i).getEnd()
,假设您已经实现了getEnd()方法。否则它应该是一个至少比hyperLinks.get(i).getStart()更高值的整数。