【发布时间】:2017-09-21 11:40:08
【问题描述】:
我在 android textview 中有一个链接。我无法捕获链接点击事件。
String text = "http:://www.google.com is a google link";
textview.setText(text);
"http:://www.google.com" 这个范围的字符串在 textview 中是可点击的。我想捕捉那个特定的点击事件。
我尝试了以下方法。
public static void setTextView(TextView text, CharSequence sequence) {
UoloLogger.i(TAG, "Setting string :: "+sequence);
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
URLSpan[] urls = strBuilder.getSpans(0, sequence.length(), URLSpan.class);
for(URLSpan span : urls) {
makeLinkClickable(strBuilder, span);
}
text.setText(strBuilder);
text.setMovementMethod(LinkMovementMethod.getInstance());
}
public static void makeLinkClickable(SpannableStringBuilder strBuilder, final URLSpan span) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
ClickableSpan clickable = new ClickableSpan() {
public void onClick(View view) {
UoloLogger.i(TAG, span.getURL());
}
};
strBuilder.setSpan(clickable, start, end, flags);
strBuilder.removeSpan(span);
}
我开始使用 setTextView() 方法将文本设置到我的文本视图中。即使我有链接,我也得到 URLSpan 数组是空的。
String text = "http:://www.google.com is a google link";
setTextView(textView, text);
抱歉英语不好。我想,我已经解释了我的问题。有人能帮我吗。
【问题讨论】:
-
按照 Arunkumar stackoverflow.com/questions/7722806/… 此处给出的步骤进行操作