效果图如下:

关键代码如下:

  1. StringBuffer sb = new StringBuffer();
  2. if(day > 0) {
  3. sb.append("<a href=\"1\">");
  4. sb.append(""+day);
  5. sb.append("</a>");
  6. sb.append(""+Global.getString(R.string.unit_Day2));
  7. }
  8. sb.append("<a href=\"2\">");
  9. if(hour > 9) {
  10. sb.append(" "+hour);
  11. } else {
  12. sb.append(" 0"+hour);
  13. }
  14. sb.append("</a>");
  15. sb.append(""+Global.getString(R.string.unit_Hour2));
  16. sb.append("<a href=\"3\">");
  17. if(minute > 9) {
  18. sb.append(" "+minute);
  19. } else {
  20. sb.append(" 0"+minute);
  21. }
  22. sb.append("</a>");
  23. sb.append(""+Global.getString(R.string.unit_Minute2));
  24. sb.append("<a href=\"4\">");
  25. if(second > 9) {
  26. sb.append(" " + second);
  27. } else {
  28. sb.append(" 0" + second);
  29. }
  30. sb.append("</a>");
  31. sb.append(""+Global.getString(R.string.unit_Second));
  32. int end = sb.length();
  33. SpannableString ss = new SpannableString(Html.fromHtml(sb.toString()));
  34. URLSpan[] urls = ss.getSpans(0, end, URLSpan.class);
  35. String resultStr = sb.toString();
  36. Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
  37. Matcher m_html = p_html.matcher(resultStr);
  38. resultStr = m_html.replaceAll(""); // 过滤html标签
  39. SpannableString span = new SpannableString(resultStr);
  40. for (URLSpan url : urls) {
  41. int startIndex = ss.getSpanStart(url);
  42. int endIndex = ss.getSpanEnd(url);
  43. // 原字两倍大小
  44. span.setSpan(new AbsoluteSizeSpan(Global.dpToPx(24)), startIndex, endIndex,
  45. Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  46. // 设置样式2
  47. span.setSpan(new ForegroundColorSpan(Color.WHITE),
  48. startIndex, endIndex,
  49. Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  50. // 设置样式3
  51. span.setSpan(new StyleSpan(Typeface.BOLD),
  52. startIndex, endIndex,
  53. Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  54. }
  55. mBottomLL2_Detail.setText(span);

说明:

1.主要原理为使用SpannableString来做多样式的String给TextView显示

2.用到<a href>标签的原因是为了做到国际化,因为span是按照index来多样化的,所以需要用href来标识多样化的index

Android TextView 实现文字大小不同和文字颜色不同的更多相关文章

  1. android Textview动态设置大小

    import android.app.Activity; //import com.travelzen.tdx.BaseActivity; //import com.travelzen.tdx.uti ...

  2. [Android] TextView上同时显示图标和文字

    需求场景 +----------------------------+ | Icon TEXT | +----------------------------+ 当然,可以使用LineLayout,包 ...

  3. android TextView 设置字体大小

    package com.example.yanlei.yl4; import android.graphics.Color;import android.os.Bundle;import androi ...

  4. 自定义界面上绘制Text,可通过拖动控制文字大小及其位置

    项目地址 最近项目上有个需求,需要在一块区域中显示文字,这块区域可以拖动,也可以通过拖拽右下角来改变大小,里面的文字大小要根据区域的大小进行自适应.刚开始觉得这个需求不难,只需要一个TextView就 ...

  5. TextView textSize 文字大小

    TextView,很常见的控件.关于文字大小的方法有: android.widget.TextView#getTextSize  返回值的单位是PX /** * @return the size (i ...

  6. Android TextView自动换行文字排版参差不齐的原因

    今天项目没什么进展,公司后台出问题了.看了下刚刚学习Android时的笔记,发现TextView会自动换行,而且排版文字参差不齐.查了下资料,总结原因如下: 1.半角字符与全角字符混乱所致:这种情况一 ...

  7. Android TextView中有图片有文字混合排列

    Android TextView中有图片有文字混合排列 1.使用html.fromHtml 2.新建ImageGetter 3.使用<img src>标签 demo: 1.设置文字 ((T ...

  8. Android TextView文字描边的实现!!

    Android开发:文字描边 转自:http://www.oschina.net/code/snippet_586849_37287 1. [代码][Java]代码 1 2 3 4 5 6 7 8 9 ...

  9. Android TextView(同时显示图片+文字)

    见上图:需要图片和文字 在一起 之前的做法是用两个控件组成 <LinearLayout> <ImageView /> <TextView /> </Linea ...

随机推荐

  1. 删除字符串中多余的空白字符和空行(C语言实现)

    要求:处理一个字符串,删除字符串中多余的空格.水平制表符和空行,并满足下列要求: (1)对原字符串只能进行一次扫描.(2)不允许申请新的空间.(3)处理后的字符串的首尾不能有空格.制表符和空行.(4) ...

  2. [虚拟化/云] kvm的架构分析

    预备知识 1. 客户机物理页框到宿主机虚拟地址转换 http://blog.csdn.net/zhuriyuxiao/article/details/8968781 http://www.tuicoo ...

  3. nodejs微信开发获取token,ticket-1

    /* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...

  4. mac文件权限

    如何设置文件/或文件夹权限为777 进入终端,切换到指定目录,输入以下命令,后面添加你的文件名/目录名$sudo chmod -R 777 (文件名/目录名) 或 $chmod 777 ./test. ...

  5. 解决.net中截取字符串的汉字与数字还有静态扩展方法

      转载 http://blog.163.com/cn_dreamgo/blog/static/52679452200961033212407/ 这两天在C#编程中应用到C#代码与C的代码信息交互,但 ...

  6. text选中后displa出label内容

    效果很好而且很简单 用text的click属性即可 private sub text1_click()label1.caption="******"label2.caption=& ...

  7. SQL语言整理归纳

  8. 选择器,$("A+B") 和$("A~B") 的理解

    在我发表这个理解之前,我有看过博客园 永恒浪子 大神的 JQuery选择器大全(http://www.cnblogs.com/hulang/archive/2011/01/12/1933771.htm ...

  9. C++_基础_运算符重载2

    内容: (1)只能用成员形式重载的运算符 (2)new/delete操作符的重载 (3)封装和继承的初识 (4)继承的特性 (5)子类及其函数的特性 (6)多重继承和虚继承 1.只能用成员形式重载的运 ...

  10. BZOJ 2716: [Violet 3]天使玩偶( CDQ分治 + 树状数组 )

    先cdq分治, 然后要处理点对答案的贡献, 可以以询问点为中心分成4个区域, 然后去掉绝对值(4种情况讨论), 用BIT维护就行了. --------------------------------- ...