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 ...
随机推荐
- 4C 2018 倒数的字符序列
输入L,N 将长度为L的小写字符串序列,比如L=3,序列为aaa,aab,aac,...aba,...zzz,求倒数第N个字符串序列是什么.输入3 7421 得到pat 第一感觉是A,B,C...,Z ...
- mysql数据库基本操作(六)
外键约束 创建外键 前面讲的表单查询都是一张表,但项目中表与表之间是有关联的,比如我们创建的学生表,他们可能在不同班级,不同班级有不同的班主任,他们之间的关系大概是这样的:每一个班主任会对应多个学生 ...
- JMeter部分功能详解
JMeter 介绍: 一个非常优秀的开源免费的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工 ...
- 暂停时间 以及dict 循环
暂停时间 #!/usr/bin/python # -*- coding: UTF-8 -*- import time myD = {1: 'a', 2: 'b'} for key, value in ...
- [AHOI2005] SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 952 Solved: 630[Submit][St ...
- Docker 创建image
images 是containers的基础.每次使用docker run 命令都要指定image. 列出本地images zane@zane-V:~$ docker images REPO ...
- 详解UIView的frame、bounds和center属性
From: http://ios.wpjam.com/2011/08/29/uiview-frame-bounds-center/ 1.概要 翻开ios官方开发文档,赫然发现上面对这三个属性的解释如下 ...
- dedecms 调用父栏目下的所有子栏目
效果如下: 代码如下: <div class="productxilie"> <ul> {dede:channelartlist row=6 typeid ...
- CityEngine结合ArcGIS制作地质体web场景 [转]
CityEnginewebWebWEB地质体 原文地址:http://www.cnblogs.com/esrichina/archive/2012/11/12/2762163.html 当我们想要对地 ...
- DNS_主从服务_详细搭建&&配置
DNS主从 安装环境: 三台dns服务器如下: 系统:均为centos7 dns_master:192.168.169.194 dns_slave-1:192.168.169.195 dns_slav ...