Android TextView 文本框
既然显示文本第一时间就要想到 TextView ,那么 TextView 能不能识别链接类型呢? 答应是肯定的
android:autoLink 属性
android:autoLink
属性用于设置 TextView 是否识别链接类型和设置可识别的链接类型
android:autoLink
的值有以下几种
值 | 说明 |
---|---|
none | 不识别,禁用识别 |
all | 可以识别全部,也就是下面四种 |
电子邮件 | |
map | 地图 |
phone | 一串数字,或者以 tel:// 开头的电话号码 |
web | 网页地址,以 http(s):// 开头的网址 |
TextView 使用 autoLink 属性识别链接类型
当文字中出现了 URL,EMail,电话号码,地图坐标的时候,可以通过设置 android:autoLink
属性让 TextView 识别这些链接类型
当点击文字中对应部分的文字,即可跳转至某默认 APP,比如一串号码,点击后跳转至拨号界面
范例
-
创建一个 空的 Android 项目
cn.twle.android.TextView
-
修改
res/values/strings.xml
为添加几个字符串<?xml version="1.0" encoding="utf-8" ?> <resources> <string name="app_name">TextView</string> <string name="hello">简单教程,官网地址 https://www.twle.cn ,联系方式 services@twle.cn ,电话 010888888 </string> </resources>
-
修改
activity_main.xml
添加一个文本框,并设置属性android:autoLink="all"
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/hello" android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="all" android:textSize="20sp" android:layout_centerInParent="true" android:text="@string/hello" /> </RelativeLayout>
运行 APP 效果如下
Java 代码设置可识别链接类型
Java 代码中可以调用 setAutoLinkMask(Linkify.ALL);
这个时候可以不写协议头, autolink 会自动识别
但如果要点击后会自动跳转到默认 APP,还需要添加 setMovementMethod(LinkMovementMethod.getInstance());
范例
复用上面的 demo , 删掉 activity_main.xml
中的属性 android:autoLink="all"
并修改 MainActivity.java
为以下内容
package cn.twle.android.textview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.method.LinkMovementMethod; import android.text.util.Linkify; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView hello = (TextView) findViewById(R.id.hello); //设置 autoLink 属性 hello.setAutoLinkMask(Linkify.ALL); // 设置点击会跳转到默认处理的 APP hello.setMovementMethod(LinkMovementMethod.getInstance()); } }
运行 APP 效果如下