Android 实现TextView的部分文字和网络链接及电话号码点击监听

本文介绍了如何在Android应用中,让TextView能够识别并响应部分文字、网络链接和电话号码的点击事件。通过设置TextView的autolink属性,结合LinkMovementMethod和SpannableStringBuilder,实现了点击不同内容时跳转或弹出对话框的效果。同时,文章还提供了自定义点击事件的实现步骤和相关代码示例。
摘要由CSDN通过智能技术生成

前言

最近在写项目的时候遇到了一个这样的需求,要像qq一样,点击评论的者的名字要跳转评论者的用户信息界面,并且点击评论信息中的web链接要跳转到WebActivity,同时如果是其他数字的话要像qq一样点击并显示底部Dialog提示是播打电话还是复制号码。

效果

先给大家看看效果

 

下面的评论由一个TextView显示,其实显示为淡蓝的都是可以点击的区域。

思路

因为没做过肯定是先百度了解一下,大部分的处理都是先设置TextView的autolink,然后系统会给你判断TextView中是否可以匹配到链接。然后通过SpannableStringBuilder来设置点击事件,当百度的部分有限,只能了解到web链接的点击事件监听,所以我在此基础上并综合直接给TextView设置部分点击的知识做了一些尝试,但是出现了一些问题,就是当autolink设置的过滤在TextView中的文字中没有匹配到的时候不能获取到Spannable对象。我就自己new了一个,但是却不能处罚点击事件,最后找到了一个TextViewtv.setMovementMethod(LinkMovementMethod.getInstance());方法,设置之后才能触发点击事件。

实现步骤

首先给你的TextView设置autoLink属性
如下

android:autoLink="all"

然后实现一个初始化web和数字链接点击的监听,如下

public static SpannableStringBuilder getWebLinkStyle(CharSequence text, Context context) {
    if (text instanceof Spannable) {
      int end = text.length();
      Spannable sp = (Spannable) text;
      URLSpan urls[] = sp.getSpans(0, end, URLSpan.class);
      SpannableStringBuilder style = new SpannableStringBuilder(text);
      style.clearSpans();
      for (URLSpan urlSpan : urls) {
        ClickableSpan myURLSpan = new ClickableSpan(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值