Android TextView 文本框

既然显示文本第一时间就要想到 TextView ,那么 TextView 能不能识别链接类型呢? 答应是肯定的

android:autoLink 属性

android:autoLink 属性用于设置 TextView 是否识别链接类型和设置可识别的链接类型

android:autoLink 的值有以下几种

说明
none 不识别,禁用识别
all 可以识别全部,也就是下面四种
email 电子邮件
map 地图
phone 一串数字,或者以 tel:// 开头的电话号码
web 网页地址,以 http(s):// 开头的网址

TextView 使用 autoLink 属性识别链接类型

当文字中出现了 URL,EMail,电话号码,地图坐标的时候,可以通过设置 android:autoLink 属性让 TextView 识别这些链接类型

当点击文字中对应部分的文字,即可跳转至某默认 APP,比如一串号码,点击后跳转至拨号界面

范例

  1. 创建一个 空的 Android 项目 cn.twle.android.TextView

  2. 修改 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>
    
  3. 修改 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 效果如下

参考文档

  1. TextView API

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.