Linkify.addLinks Span 不起作用
Linkify.addLinks with Span not working
我有带自动链接的文本视图,但每当我将自定义跨度 (ClickableSpan) 添加到文本视图时,它会自动 link 到网络 url 并且手机号码无法使用。有什么简单的方法可以解决这个问题。样式已应用,但点击不起作用。
这是因为 Html.fromHtml 和 Linkify.addLinks 在处理文本之前删除了以前的跨度。
使用此代码使其工作:
public static Spannable linkifyHtml(String html, int linkifyMask) {
Spanned text = Html.fromHtml(html);
URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);
SpannableString buffer = new SpannableString(text);
Linkify.addLinks(buffer, linkifyMask);
for (URLSpan span : currentSpans) {
int end = text.getSpanEnd(span);
int start = text.getSpanStart(span);
buffer.setSpan(span, start, end, 0);
}
return buffer;
}
我使用了这个答案并且效果很好
public static String[] extractLinks(String text) {
List<String> links = new ArrayList<String>();
Matcher m = Patterns.WEB_URL.matcher(text);
while (m.find()) {
String url = m.group();
links.add(url);
}
return links.toArray(new String[links.size()]);
}
我有带自动链接的文本视图,但每当我将自定义跨度 (ClickableSpan) 添加到文本视图时,它会自动 link 到网络 url 并且手机号码无法使用。有什么简单的方法可以解决这个问题。样式已应用,但点击不起作用。
这是因为 Html.fromHtml 和 Linkify.addLinks 在处理文本之前删除了以前的跨度。
使用此代码使其工作:
public static Spannable linkifyHtml(String html, int linkifyMask) {
Spanned text = Html.fromHtml(html);
URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);
SpannableString buffer = new SpannableString(text);
Linkify.addLinks(buffer, linkifyMask);
for (URLSpan span : currentSpans) {
int end = text.getSpanEnd(span);
int start = text.getSpanStart(span);
buffer.setSpan(span, start, end, 0);
}
return buffer;
}
public static String[] extractLinks(String text) {
List<String> links = new ArrayList<String>();
Matcher m = Patterns.WEB_URL.matcher(text);
while (m.find()) {
String url = m.group();
links.add(url);
}
return links.toArray(new String[links.size()]);
}