Android自动识别<a>标签的自定义TextView(可自定义点击事件)

本文介绍如何在Android应用中处理包含<a>标签的字符串,通过正则表达式提取href和文本,创建自定义点击事件。利用SpannableString实现分段点击,允许对每个链接设置不同的回调。
摘要由CSDN通过智能技术生成

前言:

项目里遇到这样一个需求,服务器发来一个字符串如下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
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值