android假设给TextView或EditText的email链接加下划线,并在点击在email连接上能够弹框显示
怎样把textview的一些文字加上背景色:
Spannable str = new SpannableString("#fdsfdfsdfdsfd#");
		Matcher matcher = getEmailPattern().matcher((CharSequence) str);
		while (matcher.find()) {
			int start = matcher.start();
			int end = matcher.end();
			str.setSpan(new ForegroundColorSpan(0xFF1A5798), start, end,
					Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		}
		textView.setText(str);
假设在TextView上把email链接找出来并加上下划线:
写一个属性类继承ClickableSpan
public class MessageBundleSpan extends ClickableSpan {
	public enum LinkType {
		EMAIL
	}
	private String mText;
	private MainActivity mActivity;
	public MessageBundleSpan(MainActivity activity, String text) {
		if (activity == null) {
			throw new NullPointerException("activity is NULL");
		}
		mActivity = activity;
		mText = text;
	}
	@Override
	public void updateDrawState(TextPaint ds) {
		ds.setColor(mActivity.getResources().getColor(
				R.color.message_bundle_link));
		ds.setUnderlineText(true);
	}
	@Override
	public void onClick(View widget) {
		new AlertDialog.Builder(mActivity).setTitle("Title").setMessage(mText)
				.create().show();
	}
}
<span style="white-space:pre"> </span>TextView textView = (TextView)findViewById(R.id.textview);
String str = "$#%$%$%$fsdfsddsfsdf@163.com&*&*DFDF152152@1255.com";
textView.setText(str); SpannableStringBuilder stringBuilder = new SpannableStringBuilder(textView.getText()); applyRegexPattern(textView, stringBuilder, getEmailPattern(), MessageBundleSpan.LinkType.EMAIL); textView.setText(stringBuilder, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
private static Pattern getEmailPattern() {
		if (sharppattern == null)
			sharppattern = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
		return sharppattern;
	}
   private void applyRegexPattern(TextView textView, SpannableStringBuilder stringBuilder, Pattern pattern, MessageBundleSpan.LinkType type) {
	        Matcher matcher = pattern.matcher(textView.getText().toString().toLowerCase());
	        while(matcher.find()) {
	            String text = textView.getText().toString().substring(matcher.start(), matcher.end());
	            stringBuilder.setSpan(new MessageBundleSpan(this, text), matcher.start(), matcher.end(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
	        }
   }
   
效果图:
android假设给TextView或EditText的email链接加下划线,并在点击在email连接上能够弹框显示的更多相关文章
- Android控件——TextView,EditText
		TextView: 显示文本控件 EditText 输入文本框 1.TextView常用属性: 
- 【我的Android进阶之旅】如何隐藏Android中EditText控件的默认下划线
		Android EditText控件是经常使用的控件,但是有时候我们并不需要它的一些默认的属性,比如说下划线,因为有时候这样的默认下划线看起来特别怪异,和其他控件在一起搭配的时候不协调,因此有时候就需 ... 
- Android EditText如何去除边框添加下划线
		(一)问题 之前的自定义EditText只能显示高度不超过屏幕高度的文本内容,继续增加内容会出现如下问题: (二)原因分析 下部(超出屏幕高度的部分)没有继续画线,也就是说横线没有画够,那么一定是循环 ... 
- android里TextView加下划线的几种方式
		如果是在资源文件里: <resources> <string name="hello"><u>phone:0123456</u>&l ... 
- Android TextView加下划线的几种方式
		如果是在资源文件里: <resources> <</u></string> <string name="app_name">M ... 
- 设置TextView下划线并响应点击事件(SpannableString)
		下面是一个20行的完整Demo代码:基本原理是使用一个SpannableString并设置其ClickableSpan来响应点击事件. TextView useInfo = (TextView) fi ... 
- Android 小技巧-- TextView与EditText 同步显示
		方法一.利用View.OnKeyListener"同步"显示 EditText myEdit = (EditText)findViewById(R.id.myEdit); Tex ... 
- Android自定义EditText去除边框并添加下划线
		<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ... 
- 隐藏android中EditText中的下划线以及修改光标颜色
		在android开发中 EditTextText是我们经常用到的,我们使用时会有一些小问题,当我们点击输入文字时,EditText中的光标和下划线会变成粉红色. 解决方法很简单,我们只要在EditTe ... 
随机推荐
- syslog/rsyslog的使用
			syslogd是Linux下的一个记录日志文件服务.从结构来说,可以理解为这个服务下面有一系列的子服务,例如mail.auth.cron.kern等等,这些子服务对外提供日志记录的功能,而当其它的程序 ... 
- C#图解教程学习笔记——方法
			一.字段和本地变量.本地常量字段:隶属于类的变量,即类的成员变量.本地变量:于保存本地的或临时的计算数据,即局部变量.本地常量:必须声明在块内部,声明时必须初始化,声明后不能改变.实例字段与本地变量区 ... 
- hadoop(三)HDFS 文件系统
			Hadoop 附带了一个名为 HDFS(Hadoop 分布式文件系统)的分布式文件系统,专门 存储超大数据文件,为整个 Hadoop 生态圈提供了基础的存储服务. 本章内容: 1) HDFS 文件系统 ... 
- (5)ASP.NET HTML服务器控件
			工具箱 与服务端交互 <body> <form id="form1" runat="server"> <div> <% ... 
- Jmeter(五十)_性能测试模拟真实场景下的用户操作
			概述 我们在做性能测试的时候,不同的视角看到的结果都不一样. 例如响应时间 用户通过客户端向服务端发出请求的时间为: T1服务端接收到请求,处理该请求的时间为:T2服务端返回数据给客户端时间为: T3 ... 
- IT人为了自己父母和家庭,更得注意自己的身体和心理健康
			我前一阵在一家互联网公司,工作节奏是995,忙的时候,要晚上10点才能离开公司,有时候周六还得加班.自己感觉身体状况有所下降,且听说其它一个组,在体检后多少都查出问题来,细思极恐. 有时候确实忙,那么 ... 
- 【Kafka】《Kafka权威指南》——写数据
			不管是把 Kafka 作为消息队列.消息.总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个可以从 Kafka读取数据的消费者,或者一个兼具两种角 色的应用程序. ... 
- springboot 2.0 整合 同时支持jsp+html跳转
			springboot项目创建教程 https://blog.csdn.net/q18771811872/article/details/88126835 springboot2.0 跳转html教程 ... 
- java关于Timer schedule执行定时任务 1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等
			1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Time ... 
- 最小二乘法及C语言实现
			我们以最简单的一元线性模型来解释最小二乘法.什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归.回归分析中,如 ... 
