Android TextView 实现文字大小不同和文字颜色不同
效果图如下:
关键代码如下:
- StringBuffer sb = new StringBuffer();
- if(day > 0) {
- sb.append("<a href=\"1\">");
- sb.append(""+day);
- sb.append("</a>");
- sb.append(""+Global.getString(R.string.unit_Day2));
- }
- sb.append("<a href=\"2\">");
- if(hour > 9) {
- sb.append(" "+hour);
- } else {
- sb.append(" 0"+hour);
- }
- sb.append("</a>");
- sb.append(""+Global.getString(R.string.unit_Hour2));
- sb.append("<a href=\"3\">");
- if(minute > 9) {
- sb.append(" "+minute);
- } else {
- sb.append(" 0"+minute);
- }
- sb.append("</a>");
- sb.append(""+Global.getString(R.string.unit_Minute2));
- sb.append("<a href=\"4\">");
- if(second > 9) {
- sb.append(" " + second);
- } else {
- sb.append(" 0" + second);
- }
- sb.append("</a>");
- sb.append(""+Global.getString(R.string.unit_Second));
- int end = sb.length();
- SpannableString ss = new SpannableString(Html.fromHtml(sb.toString()));
- URLSpan[] urls = ss.getSpans(0, end, URLSpan.class);
- String resultStr = sb.toString();
- Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);
- Matcher m_html = p_html.matcher(resultStr);
- resultStr = m_html.replaceAll(""); // 过滤html标签
- SpannableString span = new SpannableString(resultStr);
- for (URLSpan url : urls) {
- int startIndex = ss.getSpanStart(url);
- int endIndex = ss.getSpanEnd(url);
- // 原字两倍大小
- span.setSpan(new AbsoluteSizeSpan(Global.dpToPx(24)), startIndex, endIndex,
- Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- // 设置样式2
- span.setSpan(new ForegroundColorSpan(Color.WHITE),
- startIndex, endIndex,
- Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- // 设置样式3
- span.setSpan(new StyleSpan(Typeface.BOLD),
- startIndex, endIndex,
- Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- }
- mBottomLL2_Detail.setText(span);
说明:
1.主要原理为使用SpannableString来做多样式的String给TextView显示
2.用到<a href>标签的原因是为了做到国际化,因为span是按照index来多样化的,所以需要用href来标识多样化的index
Android TextView 实现文字大小不同和文字颜色不同的更多相关文章
- android Textview动态设置大小
import android.app.Activity; //import com.travelzen.tdx.BaseActivity; //import com.travelzen.tdx.uti ...
- [Android] TextView上同时显示图标和文字
需求场景 +----------------------------+ | Icon TEXT | +----------------------------+ 当然,可以使用LineLayout,包 ...
- android TextView 设置字体大小
package com.example.yanlei.yl4; import android.graphics.Color;import android.os.Bundle;import androi ...
- 自定义界面上绘制Text,可通过拖动控制文字大小及其位置
项目地址 最近项目上有个需求,需要在一块区域中显示文字,这块区域可以拖动,也可以通过拖拽右下角来改变大小,里面的文字大小要根据区域的大小进行自适应.刚开始觉得这个需求不难,只需要一个TextView就 ...
- TextView textSize 文字大小
TextView,很常见的控件.关于文字大小的方法有: android.widget.TextView#getTextSize 返回值的单位是PX /** * @return the size (i ...
- Android TextView自动换行文字排版参差不齐的原因
今天项目没什么进展,公司后台出问题了.看了下刚刚学习Android时的笔记,发现TextView会自动换行,而且排版文字参差不齐.查了下资料,总结原因如下: 1.半角字符与全角字符混乱所致:这种情况一 ...
- Android TextView中有图片有文字混合排列
Android TextView中有图片有文字混合排列 1.使用html.fromHtml 2.新建ImageGetter 3.使用<img src>标签 demo: 1.设置文字 ((T ...
- Android TextView文字描边的实现!!
Android开发:文字描边 转自:http://www.oschina.net/code/snippet_586849_37287 1. [代码][Java]代码 1 2 3 4 5 6 7 8 9 ...
- Android TextView(同时显示图片+文字)
见上图:需要图片和文字 在一起 之前的做法是用两个控件组成 <LinearLayout> <ImageView /> <TextView /> </Linea ...
随机推荐
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(二)
原文 http://blog.csdn.net/zhangxin09/article/details/6793330 先前的学习中,我们已经了解了 Metro式的 JavaScript 应用程序大致如 ...
- Ubuntu下,在Eclipse中使用JNI调用ffmpeg
Android的应用层开发大部分还是采用JAVA,如果想使用ffmpeg库,就必须利用JNI,使得Java可以调用C/C++的库. JNI其实就是定义的一个转接接口,可以让Java的代码调用C/C++ ...
- hdu 1210_(逻辑训练)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1210 #include<stdio.h> int main() { int n,t,sum ...
- [Leetcode][Python]21: Merge Two Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 21: Merge Two Sorted Listshttps://oj.le ...
- ntpd和ntpdate的区别
之前配置ntpd的时候搜到一句话,印象很深刻,也觉得很有标题党的效果,就借鉴为标题了:“我认为有几种人是必须不招聘/裁掉的: 1 用ntpdate代替ntpd的人”但具体原因不太懂,总觉得还是用ntp ...
- javascript 中 keyup、keypress和keydown事件
keyup.keypress和keydown事件都是有关于键盘的事件 1. keydown事件在键盘的键被按下的时候触发,keyup 事件在按键被释放的时候触发 keydown.keypress ...
- Spring构造器注入、set注入和注解注入
记得刚开始学spring的时候,老师就反复的提到依赖注入和切面,平常的java开发中,在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,sp ...
- [工具] XMind
XMind是一款非常实用的思维导图软件, 高效易用的可视化思维软件; 通过XMind可以随时开展头脑风暴, 帮助人们快速理清思路, XMind可绘制的思维导图, 鱼骨图, 二维图, 树形图, 逻辑图, ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版( LCT + 主席树 )
从左到右加边, 假如+的边e形成环, 那么记下这个环上最早加入的边_e, 当且仅当询问区间的左端点> _e加入的时间, e对答案有贡献(脑补一下). 然后一开始是N个连通块, 假如有x条边有贡献 ...
- C#控件TabControl隐藏page
隐藏 这个需求其实就是TABCONTROL控件会有很多提前制作好的PAGE页面,每次软件启动不可能所有页面都显示出来,目前想了个比较简单的方法解决这个问题 首先定义一个List集合存储TABCONTR ...