效果图如下:

关键代码如下:

  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. java设计模式之 单例模式 Singleton

    static 的应用 单例模式 Singleton 单例:保证一个类在系统中最多只创建一个实例. 好处:由于过多创建对象实例,会产生过多的系统垃圾,需要GC频繁回收,由于GC会占用较大的系统资源,所有 ...

  2. Linux内核中的list用法和实现分析

    这些天在思考知识体系的完整性,发现总是对消息队列的实现不满意,索性看看内核里面的链表实现形式,这篇文章就当做是学习的i笔记吧.. 内核代码中有很多的地方使用了list,而这个list的用法又跟我们平时 ...

  3. ORACLE视图添加备注

    ORACLE视图添加备注 版权声明:本文为博主原创文章,未经博主允许不得转载. create or replace view oes_material_series_ref as select t.p ...

  4. android DatePickerDialog theme

    网上搜索了下没有找到DatePickerDialog的各种 Theme 的样例.我就一个一个试了下,传上图片 DatePickerDiaolog有两个构造函数分别是: DatePickerDialog ...

  5. MCS-51系统中断优先级的软扩展

    摘要:鉴于MCS-51系统只提供“二级中断嵌套”,提出扩展51系统中断优先级的纯软件方法.其利用51系统内建的中断允许寄存器IE和中断优先级寄存器IP,通过屏蔽字机制来实现:以C51的形式,给出这种扩 ...

  6. MiniSD卡是什么

    Mini SD卡比目前主流的普通SD卡(如DC或DV上使用的SD卡),在外形上更加小巧,重量仅有3克左右,体积只有21.5x20x1.4mm,比普通SD卡足足节省了60%的空间.别小看这么小的外形,它 ...

  7. 解决Node.js调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)

    2014-08-23 今天开始学习Node.js,在写一个文件上传的功能时候,调用fs.renameSync方法错误 出错代码所在如下: function upload(response,reques ...

  8. 字符串匹配——KMP算法

    关于KMP算法的分析,我觉得这两篇博客写的不错: http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html ht ...

  9. SVN使用Tips

    1. 如果在本地删除了某个文件,在Cornerstone上的本地仓库会出现D的标志,并且文件不存在. 这时,只需要将该文件提交到服务器上,本地仓库就会清除了已删除的文件的标识,同时,服务器上也会自动删 ...

  10. The Hardest Problem Ever(字符串)

    The Hardest Problem Ever Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24039   Accept ...