参考内容:

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 ——悬浮按钮及可交互提示

    一.悬浮按钮 FloatingActionButton是Design Support中的一个控件,它会默认colorAccent作为按钮的颜色,还可以给按钮一个图标. 这是没有图标的,这是有图标的. ...

  2. vue中的虚拟DOM树

    什么是虚拟DOM树?(Virtual DOM)   虚拟DOM树其实就是一个普通的js对象,它是用来描述一段HTML片段的    01    当页面渲染的时候Vue会创建一颗虚拟DOM树 02    ...

  3. bottombar——Fragment

    首先是依赖   compile 'com.hjm:BottomTabBar:1.1.1' 下面是activity.xml文件 <RelativeLayout xmlns:android=&quo ...

  4. 腾讯物联TencentOS tiny上云初探

    2017年中旬曾写过一篇关于物联网平台的文章<微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比>.现在已经过去两年了,物联网的格局又发生了不少的变化.不过针对腾讯来说,其物联 ...

  5. java之面向对象详解

    #############java面向对象详解#############1.面向对象基本概念2.类与对象3.类和对象的定义格式4.对象与内存分析5.封装性6.构造方法7.this关键字8.值传递与引用 ...

  6. python匿名函数的介绍及用途

    匿名函数 用lambda能够创建一个匿名函数,这中函数得名于省略了用def声明函数的标准步骤. 语法 lambda [arg1 [,arg2,.....argn]]:expression 如何使用 我 ...

  7. 深度搜索(dfs)+典型例题(八皇后)

    深度优先搜索简称深搜,从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”. 如上面的图所示:加入我们要找一个从V0到 ...

  8. Java - 手动解析不带引号的JSON字符串

    目录 1 需求说明 2 解析代码 2.1 实现思路 2.2 详细代码 2.3 测试样例 1 需求说明 项目中遇到了一批不带引号的类JSON格式的字符串: {Name:Heal,Age:20,Tag:[ ...

  9. Python模块之requests,urllib和re

    目录 一.爬虫的步骤 二.使用Jupyter 三.爬虫请求模块之urllib 四.爬虫请求模块之requests 五.爬虫分析之re模块 一.爬虫的步骤 1.发起请求,模拟浏览器发送一个http请求 ...

  10. Python 数据科学-Numpy

    NumPy Numpy :提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库.用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多.本身是由C语 ...