Android7.0下 Spanned.getSpans出错
androidstudio吧
全部回复
仅看楼主
level 6
识别url的时候,会误识别,导致做富文本显示的时候,链接会高亮显示错误
2017年04月13日 03点04分 1
level 6
求大神解决
2017年04月13日 03点04分 2
level 6
楼下贴代码
2017年04月13日 03点04分 3
level 6
/**
* 识别TextView中的Url点击事件
*
* @param textView 需要处理的TextView
*/
public static void handleTextUrlContent(TulipTextView textView) {
CharSequence text = textView.getText();
if (text instanceof Spannable) {
Spannable sp = (Spannable) textView.getText();
URLSpan[] urls = sp.getSpans(0, sp.length(), URLSpan.class);
SpannableStringBuilder spannable = new SpannableStringBuilder(text);
if (urls.length > 0) {
//循环把链接发过去
for (URLSpan urlSpan : urls) {
String uriString = urlSpan.getURL();
TulipUrlSpan myURLSpan = new TulipUrlSpan(uriString);
int start = sp.getSpanStart(urlSpan);
int end = sp.getSpanEnd(urlSpan);
spannable.removeSpan(urlSpan);
spannable.setSpan(myURLSpan, start, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
} else {
Matcher m = urler.matcher(text);
while (m.find()) {
int start = m.start();
int end = m.end();
TulipUrlSpan myURLSpan = new TulipUrlSpan(url);
spannable.setSpan(myURLSpan, start, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
textView.isChangedBySelf = true;
textView.setText(spannable);
textView.isChangedBySelf = false;
}
}
2017年04月13日 03点04分 5
level 6
现象:Android 7.0以下
测试:http://www.baidu.com http://www.baidu.com 高亮显示
Android 7.0及其以上
测试:http://www.baidu.com baidu.com 高亮显示
具体原因应该是Spanned getSpans中识别Url时有问题
2017年04月13日 03点04分 6
level 1
可以自定义匹配规则解决(7.0)以上
2017年04月21日 10点04分 7
现在使用了匹配规则解决该问题,但是不太完美,能不能匹配出多段链接放在文本中
2017年04月21日 12点04分
@锅肉味的xx 这个如果有可能的话就是约定好 多链接的格式,或者就是翻下源码参考下URLSpan的规则, http://www.cnblogs.com/AntonyGu/p/5775670.html
2017年04月24日 01点04分
@瑞逸哥 收到,谢谢啦
2017年04月24日 01点04分
1