TextView设置连接的方式

1.设置TextView的autoLink属性值

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text_main_webBaidu"
            android:autoLink="web"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text_main_telBaidu"
            android:autoLink="phone"/>
    </LinearLayout>

2.识别html代码

   <TextView
        android:id="@+id/tvHtml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
       <span style="white-space:pre">	</span>// html识别链接
	tvHtml = (TextView) findViewById(R.id.tvHtml);

	String value = "<html><a href='http://www.baidu.com'>百度一下</a>(注意这里的URL地址必须加http:协议)<br />"
			+ "联系方式:<a href='tel://010-59928888'>010-59928888</a></html>";

	// 若打开,与html识别起冲突
	// tvHtml.setAutoLinkMask(Linkify.ALL);
	tvHtml.setMovementMethod(LinkMovementMethod.getInstance());
	tvHtml.setText(Html.fromHtml(value));

3.SpannableStringBuilder手动设置连接

    <TextView
        android:id="@+id/tvSpan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
        // span手动识别链接
	tvSpan = (TextView) findViewById(R.id.tvSpan);

	value = "[百度一下]\r\n客服电话:[010-59928888]";

	// 若打开,仍起作用
	// tvSpan.setAutoLinkMask(Linkify.ALL);
	tvSpan.setMovementMethod(LinkMovementMethod.getInstance());

	SpannableStringBuilder builder = new SpannableStringBuilder(value);

	int indexStart = value.indexOf("[");
	int indexEnd = 0;
	while (indexStart != -1) {
		indexEnd = value.indexOf("]", indexStart);

		builder = builder.delete(indexEnd, indexEnd + 1);
		builder = builder.delete(indexStart, indexStart + 1);
		indexEnd--;

		value = builder.toString();

		final String temp = value.substring(indexStart, indexEnd);

		if (temp.equals("百度一下")) {
			builder.setSpan(new ClickableSpan() {
				@Override
				public void onClick(View widget) {
					Toast.makeText(MainActivity.this, temp,
							Toast.LENGTH_SHORT).show();

					String url = "http://www.baidu.com";
					Intent intent = new Intent(Intent.ACTION_VIEW);
					intent.setData(Uri.parse(url));
					startActivity(intent);
				}
			}, indexStart, indexEnd, 0);

		}

		if (temp.equals("010-59928888")) {
			builder.setSpan(new ClickableSpan() {
				@Override
				public void onClick(View widget) {
					String url = "tel://010-59928888";
					Intent intent = new Intent(Intent.ACTION_VIEW);
					intent.setData(Uri.parse(url));
					startActivity(intent);
					Toast.makeText(MainActivity.this, temp,
							Toast.LENGTH_SHORT).show();

				}
			}, indexStart, indexEnd, 0);
		}

		indexStart = value.indexOf("[", indexEnd);
	}

	tvSpan.setText(builder, BufferType.SPANNABLE);

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

时间: 2024-10-01 17:06:12

TextView设置连接的方式的相关文章

Android TextView 设置行间距的问题 (setLineSpacing ,lineSpacingExtra, lineSpacingMultiplier)

最近的项目中,需要用到自定义控件.有个组件要获取绘制文本的高度,翻开TextView 的源码,有个方法 getLineHeight() public int getLineHeight() { return FastMath.round(mTextPaint.getFontMetricsInt(null) * mSpacingMult + mSpacingAdd); } getLineHeight 的注释如下: /** * @return the height of one standard l

Java网络编程从入门到精通(14):多种多样的建立网络连接的方式

在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器.而为了使连接服务器的方式更灵活,Socket类不仅可以通过自身的构造方法连接服务器,而且也可以通过connect方法来连接数据库. 一.通过构造方法连接服务器 我们可以通过6个重载构造函数以不同的方式来连接服务器.这6个重载的构造函数可以分为两类: 1. 自动选择IP     这种方式是最常用的.所谓自动选择IP,是指当本机有多块网卡或者在

PHPstorm设置连接FTP,进行文件上传、下载、比较

                                             内容转载自:http://www.cnblogs.com/jikey/p/3486621.html   如何在Webstorm/Phpstorm中设置连接FTP, 并快速进行文件比较,上传下载,同步等操作 补充: 1. 打开Remote Host窗口的方式: Tools | Deployment | Browse Remote Host 或 View | Tool Windows | Remote Host

Windows主机里利用VMware安装Linux(CentOS)虚拟机,Host-only连接上网方式详解

关于Host-only指的是主机与虚拟机之间的互联,因此虚拟机是不能连网的,若需要连网则需要使用NAT模式: Host-only模式实现联网得考虑如下配置过程: 附:VMware虚拟机三种网络模式(Bridged,Nat,Host-only)区别详解 VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络下的虚拟交换机 VMnet8:用于虚拟NAT网络下的虚拟交换机 VMware Network Adepter VMnet1:Hos

android TextView设置删除线,超链接,颜色和字体等说介绍

要给 TextView 加上特殊效果,方式主要有几种: 第一种,自动应用效果,使用 android:autolink 属性,如: Java代码   <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="match_parent" android:layout_heig

使用代码为textview设置drawableLeft

xml中的textView中设置android:drawableLeft: <TextView android:id="@+id/bookTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawableLeft="@drawable/

navicat软件设置连接mysql数据库

navicat软件设置连接mysql数据库 适用范围及演示使用工具 适用范围:mysql所有系列(含Linux和Windows系统下的mysql) 演示使用工具:Navicat 8.0 MySQL 演示系统:Windows2003系统 navicat连接mysql数据库设置方法/步骤 第1步:下载并安装navicat软件,本成功安装到自己电脑中,安装成功后打开开始菜单组中的navicat菜单下的"Navicat for MySQL"并单击打开. 第2步:单击navicat软件左上角中的

如何用textview设置drawableLeft属性

在麦子学院的论坛里,我看见很多android新手都在问textview设置drawableleft属性的方法,我把那位在麦子学院论坛里的问题复制下来了,然后我们一起来解答下:  原问题描述:  xml中的textView:  1. <font face="宋体" size="3"> <TextView  2. android:id="@+id/bookTitle"  3. android:layout_width="m

DBCP连接池-方式1通过读取配置文件

连接池核心类DataSource 基于这个这个核心类,创建连接池也有多种方式,下面是方式一,通过读取配置文件的方式,创建数据库的连接池. DBCPUtils.java package com.itheima.a_dbcp; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSo