SpannableString设置文本背景色
参考内容:
http://blog.csdn.net/harvic880925/article/details/38984705
http://blog.it985.com/14433.html
1.使用SpannableString给textview 文本设置背景色
public class MainActivity extends AppCompatActivity {
private TextView tv1;
private TextView tv2;
private int back_color;
private int text_color;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
back_color = ContextCompat.getColor(this,R.color.colorPrimary);
text_color = ContextCompat.getColor(this,R.color.colorAccent);
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,
// 这是在 setSpan 时需要指定的 flag,这几个属性不好理解, 还是直接运行看结果吧
// 它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、
// Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、
// Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、
// Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。
SpannableString sb1 = new SpannableString("好好学习");
SpannableString sb2 = new SpannableString("天天向上");
sb1.setSpan(new BackgroundColorSpan(back_color),0,sb1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb2.setSpan(new ForegroundColorSpan(text_color),0,sb2.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(sb1).append(sb2);
tv1.setText(ssb);
}
private void initialize() {
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
}
}
2.运行截图:
3.给textview设置点击事件
public class MainActivity extends AppCompatActivity {
private TextView tv1;
private TextView tv2;
private int back_color;
private int text_color;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
back_color = ContextCompat.getColor(this,R.color.colorPrimary);
text_color = ContextCompat.getColor(this,R.color.colorAccent);
SpannableString sb1 = new SpannableString("好好学习,hello world");
SpannableString sb2 = new SpannableString("天天向上");
sb1.setSpan(new BackgroundColorSpan(back_color),0,sb1.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
sb1.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Log.e("click","click");
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);//取消下划线
ds.setColor(text_color);
}
},4,sb1.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
tv1.setText(sb1);
tv1.setMovementMethod(LinkMovementMethod.getInstance());//必须设置,否则没有点击触发
}
private void initialize() {
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
}
}
4.运行效果图
点击 ",hello world" 会触发点击事件!
SpannableString设置文本背景色的更多相关文章
- 利用SpannableString设置文本
private void setTips(){ String big = "大字深色"; String small = "小字淡色"; Spannable ti ...
- Android(java)学习笔记82:利用SpannableString设置复合文本
1. SpannableString设置复合文本: TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来 ...
- background 设置文本框背景图
background 属性的作用是给元素设置背景,它是一个复合属性,常用的子属性如下: background-color 指定元素的背景颜色. background-image 指定元素的背景图像. ...
- SSRS动态设置文本框属性
SSRS可以通过表达式动态设置文本框所有的属性,比如字体,字号,是否加粗,如下图所示: 汉字和数字英文字母占用的空间不一样,一个汉字占用两个数字和英文字母的空间,VB里有LENB取得字节数,这SSRS ...
- Android Material适配 为控件设置指定背景色和点击波纹效果
Android Material适配 为控件设置指定背景色和点击波纹效果,有需要的朋友可以参考下. 大部分时候,我们都需要为控件设置指定背景色和点击效果 4.x以下可以使用selector,5.0以上 ...
- iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮
一.登录模块的布局 将一整部分切割成若干部分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置pla ...
- ligerUI_入门_001_设置文本能否被编辑、事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery设置文本框值 与获取文本框的值
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- html5权威指南:设置文本样式
css部分---设置文本与字体样式:http://blog.csdn.net/hierarch_lee/article/details/52611250 补充---设置网页文本选中样式:http:// ...
随机推荐
- Hibernate自动执行更新方法
问题场景:在执行查询时,没有对对象A调用save或者update操作,控制台显示却执行过一次update 问题原因:在执行查询之前 对A中的某一个关联对象 one-one one-many 等 字段 ...
- 在使用Lists.transform时,不会直接生成PurchaseOrderVo的集合对象,而是生成一个Function的集合
但是在使用Lists.transform时,不会直接生成PurchaseOrderVo的集合对象,而是生成一个Function的集合,在循环的时候,会去调用apply 生成一个PurchaseOrde ...
- 如何用python进行邮件发送
使用Python调用邮件服务器发送邮件,使用的协议是SMTP(Simple Mail Transfer Protocol),下图为使用TCP/IP基于SMTP发送邮件的过程示意图: SMTP协议工作原 ...
- html利用j获取局域网内的本机IP(根据客户端浏览器的ip获取)
根据客户端浏览器的ip获取 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...
- caffe学习网站
1.http://www.cnblogs.com/denny402/tag/caffe/
- Ubuntu 18.04 下载地址
http://mirrors.163.com/ubuntu-releases/18.04/
- MySQL之备份和还原
在实际项目中对于数据库的安全是重中之重,为防万一我们需要做好备份工作.备份分为全量备份和增量备份,今天我们就来实践下备份和还原操作. 一.为什么需要备份 在生产环境中数据库可能会遭遇到各种各样的不测从 ...
- Go语言学习——如何实现一个过滤器
1.过滤器使用场景 做业务的时候我们经常要使用过滤器或者拦截器(听这口音就是从Java过来的).常见的场景如一个HTTP请求,需要经过鉴权过滤器.白名单校验过滤.参数验证过滤器等重重关卡最终拿到数据. ...
- CocosBuilder 学习笔记(1) CCBReader 解析.ccbi文件流程
1. 简介 CocosBuilder是免费开源的Cocos2d UI编辑器. .ccb文件是CCB项目的原始文件. .ccbi文件是CCB项目发布后的生成的二进制文件.CCBReader可以快速通过该 ...
- PHP 与 MySQL 相关操作
一.MySQL基操 •MySQL启动 注意:MySQL不能直接通过 mysql.exe 命令启动 MySQL客户端访问服务端需要寻找匹配:连接认证 连接:IP和端口确定,如果是本地都可以忽略 -h 主 ...