Android TextView 实现文字大小不同和文字颜色不同

简介:

效果图如下:


关键代码如下:

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

说明:

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

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

目录
相关文章
|
6月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
229 3
|
10月前
|
API Android开发 开发者
Android颜色渐变动画效果的实现
本文介绍了在Android中实现颜色渐变动画效果的方法,重点讲解了插值器(TypeEvaluator)的使用与自定义。通过Android自带的颜色插值器ArgbEvaluator,可以轻松实现背景色的渐变动画。文章详细分析了ArgbEvaluator的核心代码,并演示了如何利用Color.colorToHSV和Color.HSVToColor方法自定义颜色插值器MyColorEvaluator。最后提供了完整的源码示例,包括ColorGradient视图类和MyColorEvaluator类,帮助开发者更好地理解和应用颜色渐变动画技术。
328 3
|
10月前
|
Java Android开发
Android背景颜色滑动渐变效果(上下滑动,左右滑动)
本文分享了一种通过ScrollView实现滑动变色效果的简单方法。主要步骤包括:1) 在布局中添加ScrollView并确保内容可滑动;2) 获取屏幕高度;3) 获取控件高度;4) 使用GradientDrawable设置渐变颜色;5) 根据控件与屏幕高度比例动态调整颜色数量。示例代码展示了如何在滑动时根据比例改变背景颜色,实现流畅的视觉效果。
291 0
|
10月前
|
Android开发 开发者
Android自定义view获取attr中自定义颜色的问题
本文针对Android自定义View在布局中设置颜色时遇到的问题进行分析与解决。问题表现为通过`getAttributeIntValue`方法获取颜色时,使用资源引用(如`@color/colorPrimary`)无法正确获取,而直接使用十六进制颜色值(如`#ff0000`)则正常。经过源码分析,发现是属性格式定义及获取方式不当导致。解决方案为将`attrs`文件中颜色属性的格式改为`reference|color`,并使用`TypedArray`的`getColor`方法获取颜色值,确保资源引用和直接颜色值均能正确解析。希望本文能帮助遇到类似问题的开发者。
213 0
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
1234 4
|
XML 存储 Java
浅谈Android的TextView控件
浅谈Android的TextView控件
177 0
|
XML Android开发 数据格式
Android 中使用SpannableString实现TextView文本超链接跳转功能
Android 中使用SpannableString实现TextView文本超链接跳转功能
545 0
|
Android开发
Android TextView 点击超链接跳转实现
前提:之前遇到过一次textview显示url的方式,但是并未深入探究。但是,上个礼拜一个朋友问我如何在textview上面加载url,并且点击跳转到指定页面。
1881 0
|
Android开发
Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
在Android中,TextView是我们最常用的用来显示文本的控件。 <p>  一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下。</p> <p><br></p> <p>   res-layout-main.xml</p
1703 0

热门文章

最新文章