Android 单个TextView中文字颜色,超链接等效果的设置
来源:互联网 发布:mysql 二进制安装 编辑:程序博客网 时间:2024/05/22 01:31
From:http://blog.csdn.net/nono_love_lilith/article/details/7185193
一般在一个TextView中的字体颜色,效果都是统一的。
如果一段文字,前几个文字要显示高亮,中间部分一个超链接,后半部分自定义颜色。
简单点可能直接用3个textView来表示了。
因为上次做一个彩票的软件,对于双色球来说,大家都知道。
双色,那就有两种颜色。
很显然,这个效果,最后需要在一个TextView中完成。(当然也可以2个,红色和蓝色分开)。
然后我们第一反应是想到一个SpannableString这个类。
以下是网上copy过来一段代码:
- //创建一个 SpannableString对象
- SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
- //设置超链接
- sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- //设置高亮样式一
- sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- //设置高亮样式二
- sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- //设置斜体
- sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- //SpannableString对象设置给TextView
- myTextView.setText(sp);
- //设置TextView可点击
- myTextView.setClickable(true);
- myTextView.setMovementMethod(LinkMovementMethod.getInstance());
//创建一个 SpannableString对象 SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体."); //设置超链接 sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置高亮样式一 sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置高亮样式二 sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE); //设置斜体 sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); //SpannableString对象设置给TextView myTextView.setText(sp); //设置TextView可点击 myTextView.setClickable(true); myTextView.setMovementMethod(LinkMovementMethod.getInstance());
恩。一个不错的解决方式。
但是后来发现一个问题。
在对于SpannableString对象做整体操作时,我们对于里面的要设置的部分文字都是以截取方式,因此,也就是我们在构造这个
对象然后操作时,对于构造进去的String内容都是事先知道了。
那我这个开奖号码:双色球是7个数字,其他的就不一定了。而且还有一个问题,文字中我是带有空格的,
这使得在setxx对于索引起始位置定位比较困难。
后面了解了一个新方式:Html.fromHtml();
直接把文字组装成html文本。
代码:
- String redNums = nums[0].replace(",", " ");
- String blueNums = nums[1].replace(",", " ");
- StringBuilder sb = new StringBuilder();
- sb.append("</font>");
- sb.append("<font color='#ff00ff'>");
- sb.append(redNums);
- sb.append("</font>");
- sb.append(" ");
- sb.append("</font>");
- sb.append("<font color='#0000cc'>");
- sb.append(blueNums);
- sb.append(" ");
- sb.append("</font>");
- Spanned spanned = Html.fromHtml(sb.toString());
- preNumView.setText(spanned);
String redNums = nums[0].replace(",", " ");String blueNums = nums[1].replace(",", " ");StringBuilder sb = new StringBuilder();sb.append("</font>");sb.append("<font color='#ff00ff'>");sb.append(redNums);sb.append("</font>");sb.append(" ");sb.append("</font>");sb.append("<font color='#0000cc'>");sb.append(blueNums);sb.append(" ");sb.append("</font>");Spanned spanned = Html.fromHtml(sb.toString());preNumView.setText(spanned);
效果就是上图那样的显示。
当然最后发现其实用SpannableString也能实现:
我构造两个SpannableString,一个红球,一个篮球的。
然后StringBuider组装下。适合在构造的SpannableString不是太多的情况下挺好的。
Html.fromHtml()这个api适合搞过网页开发的用户。本人没做过前端。对于几个标签都不是很熟悉。
而且适合设置大篇幅的版面文字,图片等资源。
0 0
- Android 单个TextView中文字颜色,超链接等效果的设置
- Android 单个TextView中文字颜色,超链接等效果的设置
- Android 单个TextView中文字颜色,超链接等效果的设置
- Android TextView中文字 颜色,超链接等效果
- Android TextView中文字通过SpannableString来设置不同的属性:超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
- 1002 A + B Problem II
- 解决ubuntu安装完后中文字体变成楷体
- 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决办法
- 正交向量与子空间
- 历经3年封闭研发 新锐互联网安全软件“火绒”正式面世
- Android 单个TextView中文字颜色,超链接等效果的设置
- FFT 窗口T 和采样率,混叠?
- GCC编译器(多种硬体平台上编译出可执行程序的超级编译器)
- 研大考研:2015考研英语考察重点
- 内存地址转换为数字
- 在知乎上看到的一个电话诈骗的文章
- 6174问题
- android adapter 1
- GitHub上最受欢迎的Android开源项目TOP20