参考内容:

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设置文本背景色的更多相关文章

  1. 利用SpannableString设置文本

    private void setTips(){ String big = "大字深色"; String small = "小字淡色"; Spannable ti ...

  2. Android(java)学习笔记82:利用SpannableString设置复合文本

    1. SpannableString设置复合文本: TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来 ...

  3. background 设置文本框背景图

    background 属性的作用是给元素设置背景,它是一个复合属性,常用的子属性如下: background-color 指定元素的背景颜色. background-image 指定元素的背景图像. ...

  4. SSRS动态设置文本框属性

    SSRS可以通过表达式动态设置文本框所有的属性,比如字体,字号,是否加粗,如下图所示: 汉字和数字英文字母占用的空间不一样,一个汉字占用两个数字和英文字母的空间,VB里有LENB取得字节数,这SSRS ...

  5. Android Material适配 为控件设置指定背景色和点击波纹效果

    Android Material适配 为控件设置指定背景色和点击波纹效果,有需要的朋友可以参考下. 大部分时候,我们都需要为控件设置指定背景色和点击效果 4.x以下可以使用selector,5.0以上 ...

  6. iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮

    一.登录模块的布局 将一整部分切割成若干部分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置pla ...

  7. ligerUI_入门_001_设置文本能否被编辑、事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. jquery设置文本框值 与获取文本框的值

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. html5权威指南:设置文本样式

    css部分---设置文本与字体样式:http://blog.csdn.net/hierarch_lee/article/details/52611250 补充---设置网页文本选中样式:http:// ...

随机推荐

  1. android——SQLite数据库存储(创建)

    Android 专门提供了SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行创建和升级. 首先SQLiteOpenHelper是一个抽象类,在使用的时候需要创建一个自己的帮 ...

  2. 实验:keepalived双主抢占模式和非抢占模式和IPVS

    内容: 一:概念.原理   二:实验过程 一.概念 一.keepalived原理及配置解析 keepalived:vrrp协议的实现 vrrp协议:virtual router redundancy ...

  3. 洛谷 P2657 [SCOI2009]windy数

    题意简述 求l~r之间不含前导零且相邻两个数字之差至少为2的正整数的个数 题解思路 数位DP 代码 #include <cstdio> #include <cstring> # ...

  4. LeetCode_62_不同路径

    /** * @author jianw.li * @date 2019/1/22 11:11 PM * @Description: 不同路径 * 一个机器人位于一个 m x n 网格的左上角 (起始点 ...

  5. Windows Server2008 监控服务器性能

    下面学习Windows Server2008监控服务器性能包括 日志管理,归档日志,日志排错,怎么配置计算机以转发和收集事件,使用任务管理监控内存和CPU的使用,查看程序内存使用,查看程序CPU使用, ...

  6. 2018年蓝桥杯b组国赛真题

    1.标题:换零钞x星球的钞票的面额只有:100元,5元,2元,1元,共4种.小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱.小明有点强迫症,他坚持要求200元换出 ...

  7. Linux 终端命令格式

    Linux 终端命令格式 一.目标 了解终端命令格式 知道如何查阅终端命令帮助信息 二. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相 ...

  8. 图灵学院Java架构师-VIP-【性能调优-Mysql索引数据结构详解与索引优化】

    最近报名了图灵学院的架构专题的付费课程,没有赶上6月份开课,中途加入的.错过了多线程的直播课程,只能看录播了

  9. 轻松pick移动开发第二篇,rem布局

    一.为什么要使用rem布局 前面我写了flex布局的优点,分配伸缩盒容器中子盒子占的份数及排列方式,使其不受屏幕缩放的影响,使布局变得简单.然而,在有些时候,不可避免要给盒子设置高度的值,怎么让高度也 ...

  10. PIXIJS的一些使用

    我发现pixijs在国内简直就是一片静土啊,只有那么一点点的微弱的不能再微弱的声音. 我在这里整理了下我使用过程中解决和可能理解的一些问题吧,都是一个个点,而不是完整的示例. 先放官网示例: http ...