TextView 添加链接

原创 2015年11月18日 11:58:50

TextView 添加链接

有时我们需要在文字中添加链接供用户点击,如 email, phone, web, map 等。笔者此前的一个项目中就有此需求——当用户选择不同的提现方式时显示不同的提示文字,其中支付宝提现需要添加链接供用户点击查看,链接跳转至支付宝官方说明。这样做的好处是,说明来自官方,更加权威、可信、一致和简洁。下面介绍两种常用的给 TextView 添加链接的方法。

autoLink 属性可应用于 TextView 及其子类如 Button 等,但并非所有子类均有效,如 Button 中有效但在 EditText 中链接虽然变色却不可点击,其对应的 xml 属性和方法如下:

xml 属性 对应的方法
android:autoLink setAutoLinkMask()

Google 官方文档对其说明:

Controls whether links such as urls and email addresses are automatically found and converted to clickable links. The default value is “none”, disabling this feature.

控制是否将 urls, email 等地址自动转换为可点击的链接,默认属性为 “none” 以禁用这一特性。

autoLink 属性可接受的参数及说明如下:

常量 说明
none 0x00 默认值,不匹配任何地址。
web 0x01 匹配 URLs
email 0x02 匹配 email
phone 0x04 匹配电话号码
map 0x08 匹配地图地址
all 0x0f 匹配所有(相当于 web | email | phone | map)

举个例子,布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_link"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:text="@string/my_info"/>
</LinearLayout>

其中 my_info 对应的 string 如下:

<string name="my_info">我的电话: 10000\n我的博客: http://blog.csdn.net/mrchx\n我的邮箱: 10000@qq.com</string>

运行后显示效果如下:

LinkScreen

以上在 xml 中设置 autoLink 属性,也可在代码中设定,如下:

TextView linkTV = (TextView) findViewById(R.id.tv_link);
linkTV.setAutoLinkMask(Linkify.ALL); // 要在 setText() 之前, 否则无效.
linkTV.setText(R.string.my_info);

在代码中设定时需要注意 setAutoLinkMask() 方法一定要在设置显示内容之前执行,否则无效。这也意味着,如果你仅在 xml 中设置要显示的内容,然后在代码中执行 setAutoLinkMask() 也是无效的。

2. setMovementMethod()

以上介绍的可满足大部分需求,但如果我们只想展示描述性的文字并不显式的显示地址,在点击描述性的文字时跳转,此时以上方法就不适用了。如本文开头提到的支付宝提现说明,直接展示链接地址不如展示描术性的文字友好,效果如下:

MrChx 的 CSDN 博客

这个链接并不显示地址而仅显示描述文字但仍可点击,这在网页中极其常见,TextView 中也可做到。再举个例子,布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_link"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_info" />
</LinearLayout>

其中 my_info 对应的 string 如下:

<string name="my_info"><a href="http://blog.csdn.net/mrchx">MrChx 的 CSDN 博客</a></string>

主要代码如下:

TextView linkTV = (TextView) findViewById(R.id.tv_link);
linkTV.setMovementMethod(LinkMovementMethod.getInstance());

这样就可以做到只显示“MrChx 的 CSDN 博客”并可点击跳转的效果了,纯代码实现如下:

TextView linkTV = (TextView) findViewById(R.id.tv_link);
linkTV.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href=\"http://blog.csdn.net/mrchx\">MrChx 的 CSDN 博客</a>";
linkTV.setText(Html.fromHtml(text));

总结

Html 还可定义更多属性以显示更多的文字效果,基本上可以满足各种需求。此外还可通过创建 SpanableString 字符串添加链接,本文不作过多介绍,有兴趣可自行搜索查看。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在TextView中添加超链接

  • 2016年08月07日 13:48
  • 1.28MB
  • 下载

TextView添加链接实现富文本label带点击功能

TextView添加链接有时候我们需要实现一行文中中某些文字带有点击的功能,大多数情况下会采用label和button结合实现或者第三方富文本label,其实用textView添加链接实现起来非常方便...

为TextView添加链接-setMovementMethod

为TextView添加链接-setMovementMethod 一、前言:     本文是由《TextView中的图文共存问题》延伸出来的知识点讲解;原文地址:《TextView中...

给TextView添加超链接的四种方式

因为在上上篇博客中介绍了SpannableString的使用(SpannableString使用详解),由此想到给TextView添加超链接究竟有多少种方式?经过个人总结,现在一共发现四种,如果还有其...

为TextView添加样式——下划线,颜色,设置链接样式及前背景色

实现下划线及颜色设置: public class AtActivity extends Activity { LinearLayout ll; /** Called when t...

Android在文本中添加超链接 (TextView)

在TextView中使用超级连接有几种方式: 1.在属性中设置: TextView android:id="@+id/testweb"     android:layout_width...
  • sfshine
  • sfshine
  • 2012年04月29日 11:17
  • 15911

Android高亮显示TextView某个单词,添加链接

package com.zhou.activity; import android.app.Activity; import android.graphics.Color; ...

在TextView中添加其他链接的方法

如果只是简单需要textview在显示时候将网址、邮件地址、电话号码识别出来并且带上超链接,只需要在xml将textview的属性添加一个autoLink="all"即可。但是如果希望在文字中定义更复...

Android TextView富文本、超链接和添加文字背景等其他效果的实现

TextView除了显示常规的文本之外haineeng

在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!

转载自 点击打开链接http://blog.csdn.net/gdky005/article/details/7614153 Android 在 TextView 中设置超链接、颜色、字体、图片...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TextView 添加链接
举报原因:
原因补充:

(最多只允许输入30个字)