前言:
项目里遇到这样一个需求,服务器发来一个字符串如下xxxx<a href="http://www.baidu.com">baidu</a>xxxx,xxxx,需要在Android客户端上显示出来,并且点击相应的文字还能打开系统默认浏览器,大体效果如下图:
我的实现思路大体是这样:首先将带有<a>标签的字符串使用正则处理,将<a>标签中的href字段取出,显示文本取出,这个<a>标签在源字符串的起始位置和结束位置取出,用于替换相应文字。通过getUrlFromJDP()方法实现,并返回一个二位数组,这个二位数组的第二维是这段文字的url序号,第一维是url,显示文字,起始结束位置的下标。
将需要的字符串取出之后,通过SpannableString组合多个普通的span和可点击的span实现分段点击效果,并且点击事件可以自定义。
代码实现很简单,只有两个方法:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Administrator on 2016/6/22.
*/
public class AlxUrlTextView extends TextView{
public AlxUrlTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setText