同一TextView上内容的不同显示(最新)-SpannableString

上次发了一篇同一TextView内容的不同显示这篇文章,

有关颜色的不同显示,我使用了最简单但是也最复杂的方法,忘记使用SpannableString,现重新发一下,大家参考下。

TextView组件改变部分文字的颜色现在有两种办法,一种是比较笨的方法

TextView textView = (TextView)findViewById(R.id.textview);
textView.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));

这种办法上一篇文章已经写了例子这里不作过多说明。

第二种用到了SpannableString 这个东东。

先举例子:

首先是color文件

<color name="remind">#25a7f2</color>
<color name="sports_value">#3a3f47</color>

然后正题

String str = "路人甲回复路人乙:你是个棒槌!";
SpannableString spanString = new SpannableString(str);

spanString.setSpan(Object what, int start, int end, int flags);

四个属性,前三个,第一个是方法,第二个是开始位置 第三个是结束位置,

注意:包含开始位置不包含结束位置

int endTwo=str.indexOf("回复");
int endThree=str.indexOf(":");
spanString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.remind)), 0, endTwo, 

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.sports_value)), endTwo, 

endTwo+2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.remind)), endTwo+2, 

endThree+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spanString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.sports_value)), endThree+1, 

str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spanString);

上面这个new ForegroundColorSpan(mContext.getResources().getColor(R.color.remind)),是设置字体颜色

换成new BackgroundColorSpan(mContext.getResources().getColor(R.color.remind)),就会变成设置背景颜色

还有很多诸如超链接,斜体等属性设置就不一一举例了。

自己使用过程中研究掌握的会好一点,我的作用是给那些不知道这个东东属性的童鞋一个提醒。

最后:效果图:

时间: 2024-10-08 06:43:09

同一TextView上内容的不同显示(最新)-SpannableString的相关文章

同一TextView上内容的不同显示

首先请原谅我不会给文章起名字...不能准确的表达出到底要讲什么,真实智商捉急. 直接上图 如图所示显示的是两个textview 第一个实现的是,在同一个textview中给不同内容赋予不同的颜色. 第二个实现的是,通过占位符来实现我们变换数字的目的. 布局就不说了,很简单,就两个textview 我给他们加了边框,算是复习一下,加边框的方法,请看我另一篇文章 先说第一个textview直接上代码 textView1=(TextView)findViewById(R.id.text1); Stri

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 Foregr

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 Foregr

Linux课程笔记 Day04 课上内容总结

1. Crond介绍 1.0 定时任务比较及cron语法 Linux的任务调度可以分为两类: 系统自身执行的任务 用户执行的工作 Linux系统下另外两种定时任务软件: at:适合仅执行一次的调度任务,需要启动一个名为atd的服务 anacron:这个命令主要用于非7*24小时开机的服务器,anacron并不能指定具体时间执行任务,而是以天为周期或者在系统每次开机后需要执行的任务,它会检测停机期间应该进行,但是并没有进行的crontab任务工作,执行一遍. 这两种比较少用 指令语法: Cront

DIV CSS鼠标经过悬停在图片上时图片上方显示文字(转)

DIV CSS鼠标悬停在没有文字内容图片上时图片上方显示文字,完全是纯css div实现.CSS实现鼠标悬停放图片上方时显示美化内容. 原始图片显示没有文字在上方,当鼠标经过悬停时显示文字并且文字背景为半透明.可以使用纯DIV+CSS实现鼠标悬停图片上显示文字内容. 纯div+css实现第一张图片没有文字内容,鼠标悬停时出现第二张图那样效果 使用div css实现鼠标悬停图片上方时显示文字内容原理: 首先我们设置一个盒子对象,并且将图片使用style标签内设置为CSS背景图片,同时设置该对象ht

用 CSS 控制li列表的长度,让li里面的内容不换行显示,而且让多余li长度的内容用...表示

用 CSS 控制li列表的长度,让li里面的内容不换行显示,而且让多余li长度的内容用...表示,其实实现的方法很简单.我们只需要在对li的css样式进行控制就可以了,具体如下: 1 white-space:nowrap; /*不让文字内容换行*/ 2 overflow:hidden;/*文字溢出的部分隐藏起来*/ 3 text-overflow:ellipsis; /*用...替代溢出的部分*/

WordPress主题开发实例:显示最新发表文章

实现效果 制作网站的时候,想在页面左栏显示最新发表的文章,如: 一.先开启侧边栏工具,在functions.php加上 $args = array( 'name' => __( '分类侧边栏'), 'id' => 'cat-01', 'description' => '将在分类页显示侧边栏', 'class' => '', 'before_widget' => '<li id="%1$s" class="widget %2$s"&

Android上使用OpenGLES2.0显示YUV数据

在Android上用OpenGLES来显示YUV图像,之所以这样做,是因为: 1.Android本身也不能直接显示YUV图像,YUV转成RGB还是必要的: 2.YUV手动转RGB会占用大量的CPU资源,如果以这样的形式播放视频,手机会很热,所以我们尽量让GPU来做这件事: 3.OpenGLES是Android集成到自身框架里的第三方库,它有很多的可取之处. 博主的C/C++不是很好,所以整个过程是在Java层实现的,大家见笑,我主要参考(但不限于)以下文章,十分感谢这些朋友的分享: 1. htt

关于DEDECMS自定义模型当中添加自定义字段后在后台添加内容后不显示解决方案

用DEDECMS的时间也不长,最近在做一个站时,就遇到了这个问题(自定义字段在后台不显示内容)中添加自定义字段后在后台编辑打开后发现我之前添加的内容不显示,如果是只是看看不单击确定的话,那么在前台数据的调用就是正常的,但是再次回到后台发现,那个几个字段就是不显示,没办法,在网上查了一下,还是没有找到问题的原因,算了于是自己看了一下他的附加表当中是不是有什么问题,打开后发现了,原来是在数据库里面字段的名是大写(PS:我在添加自定义字段是喜欢首字母大写)应该不会是这个问题吧!于是我把他们改成了小写字