在Android TextView中,每个单词都是一个标签,可以使用ClickableSpan为每个单词点击。
TextView的高度设置为wrap-content,maxHeight设置为150dp。
在textview应用中单击主题标签时,可以正确导航到相应页面。
问题是,当我尝试滚动textView时,它不会滚动。不管我抬起手指在哪个标签上,它都会为该标签注册一次点击。
当上下滚动textview时如何阻止标签的点击?
SpannableString strClickableHashTags = new SpannableString(eventHashTags);
int startIndex = 0;
int endIndex = 0;
for(String hashTag : listHashTags){
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
TextView hashTagView = (TextView) widget;
Spanned spannedText = (Spanned) hashTagView.getText();
int startIndex = spannedText.getSpanStart(this);
int endIndex = spannedText.getSpanEnd(this);
String hashTag = (spannedText.subSequence(startIndex, endIndex)).toString();
if(hashTag.startsWith("#")){
openSearchPageForHashTag(hashTag);
}
else if(hashTag.startsWith("@")){
openSearchPageForUserSearch(hashTag);
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.WHITE);
startIndex = eventHashTags.indexOf(hashTag, endIndex);
endIndex = startIndex + hashTag.length();
strClickableHashTags.setSpan(clickableSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
strClickableHashTags.setSpan(fcs, startIndex, endIndex, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}
textHashTags.setText(strClickableHashTags);
textHashTags.setMovementMethod(LinkMovementMethod.getInstance());
textHashTags.setHighlightColor(Color.TRANSPARENT);
eventHashTags是包含单个以空格分隔的主题标签的字符串。
listHashTags是eventHashTags中所有主题标签的ArrayList。