设置TextView中文字的超链接

main.xml如下:

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="期望有一天不用写代码也可以吃得起馒头" />

</RelativeLayout>

mainActivity如下:

package c.c;
import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
/**
 * Demo描述:
 * 为TextView中的文字设置链接,当点击此链接的时候执行相应的操作
 */
public class MainActivity extends Activity {
    private TextView mTextView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
    private void init() {
    	mTextView=(TextView) findViewById(R.id.textView);
    	String string = mTextView.getText().toString();
    	addUrlSpan(mTextView, string);
    	mTextView.setFocusable(true);
    	mTextView.setMovementMethod(LinkMovementMethod.getInstance());
		catchUrl(mTextView);
	}
    private class TestSpan extends ClickableSpan {
		private String url;
		TestSpan(String url) {
			this.url = url;
		}
		@Override
		public void onClick(View widget) {
			if (url.equals("showinfo")) {
				Toast.makeText(MainActivity.this, "点击了链接", Toast.LENGTH_SHORT).show();
				System.out.println("执行点击链接后的操作");
			}
		}
	}
	private void addUrlSpan(TextView tv, String string) {
		SpannableString spanString = new SpannableString(string);
		URLSpan span = new URLSpan("showinfo");
		int start = string.length() - 4;
		int end = string.length() - 1;
		spanString.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		tv.setText(spanString);
	}

	private void catchUrl(TextView textView) {
		CharSequence text = textView.getText();
		if (text instanceof Spannable) {
			int end = text.length();
			Spannable sp = (Spannable) textView.getText();
			URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
			SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(text);
			spannableStringBuilder.clearSpans();

			for (URLSpan url : urls) {
				TestSpan testSpan = new TestSpan(url.getURL());
				spannableStringBuilder.setSpan(testSpan, sp.getSpanStart(url),
				sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
			}
			textView.setText(spannableStringBuilder);
		}
	}

}

 

时间: 2024-10-07 20:39:33

设置TextView中文字的超链接的相关文章

Android TextView中文字通过SpannableString设置属性用法示例_Android

本文实例讲述了Android TextView中文字通过SpannableString设置属性的方法.分享给大家供大家参考,具体如下: 在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. //创建一个 SpannableString对象 SpannableStri

利用SpannableStringBuilder设置TextView中部分文字的颜色

MainActivity如下: package cc.testspannablestringbuilder; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import android.widget.TextView; import android.

android-如何改变textview中文字的间距?

问题描述 如何改变textview中文字的间距? 如题,如何改变textview中文字的间距? android:lineSpacingExtra="" 好像并没有用 解决方案 你这个是行间距 字间距是setTextScaleX 解决方案二: 你所说的是行间距,android中的textScaleX属性,可以设置textview中字体等比例的缩放,设置的值是float类型的,但是貌似不会拉大字之间的距离,你可以参考一下这篇日志,看有没有想法http://xiaxveliang.blog.

Android实现TextView中文字链接的4种方式介绍及代码_Android

 Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如 果是所有的类型都出来就是android:autoLink="all".当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 2.将要处理的文字写到一个资源文件,如string.xml,然后的java代码

Android实现TextView中文字链接的4种方式介绍及代码

Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如 果是所有的类型都出来就是android:autoLink="all".当然也可以在java代码里 做,textView01.setAutoLinkMask(Linkify.ALL); 2.将要处理的文字写到一个资源文件,如string.xml,然后的java代码里

string-使用 Spinner 中选择的值设置 TextView 中 text 的大小

问题描述 使用 Spinner 中选择的值设置 TextView 中 text 的大小 我想使用 spinner 设置一个值,然后在onClick方法中给选定项设置一个Remote View TextView 中text的大小.如何实现? String selected; Context context = WidgetConfig.this; static Spinner spinner; ... spinner.setOnItemSelectedListener(this); public

Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

在Android中,TextView是我们最常用的用来显示文本的控件.   一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下.    res-layout-main.xml [html] view plaincopy <?xml version="1.0" encoding="utf-8"?>

android TextView中文字通过SpannableString设置属性

在Android中,TextView是我们最常用的用来显示文本的控件.   一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. [java] view plaincopy //创建一个 SpannableString对象       SpannableString msp = new SpannableString("字体测试字体大小

Word文档中文字怎么设置超链接

Word文档中文字怎么设置超链接           首先展示的是效果图,点击文字超链接,玫瑰图片就出来啦. 1.选中"玫瑰图片"文字,单击鼠标右键,在弹出的快捷菜单中选择"超链接". 2.链接到"现在文件或网页",选中"当前文件夹",查找范围为"桌面",选中玫瑰图片,单击"确定". 3.将光标定位到文字处,根据提示按住Ctrl并单击,即可访问链接.