Android字符串及字符串资源的格式化
为什么要写这一篇随笔呢?最近做项目的过程中,遇到很多页面在要显示文本时,有一部分是固定的文本,有一部分是动态获取的,并且格式各式各样。一开始采取比较笨的办法,把他拆分成一个个文本控件,然后对不同的控件采用不同的样式。这样做效率
很低,并且文本之间的对齐是个很大的问题,后来到网上寻求帮助,找到一些有关Android字符串和字符串资源格式化的文章,在此做一个总结。
一.字符串格式化
Java的String类给我们提供了两个重载的格式化字符串的方法,可以通过占位符的方式,向固定字符串中传入参数。他们分别是:
format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
例如:
字符串占位符%s :System.out.println("Hi,%s", "王力") 输出 Hi,王力
十进制整形占位符%d :System.out.println("我今年%d岁", 20) 输出 我今年20岁
浮点型占位符%f:System.out.println("荔枝的价格是 %f 元", 3.5) 输出 荔枝的价格是3.5元
还有其他字符型,整形,日期格式等等格式化方法,再次就不一一举例了。
二.带HTML标签的字符串格式化
当我们需要对一段文字的部分文字进行字体颜色,字形,字体风格设置时,我们可以使用HTML标签,然后在输出的时候,通过Html.from方法解析为html字符串。
例如:
String str = "后面的文字是加粗的红色文字:" + "<font color='#ff0000'><b>加粗红色文字</b></font>";
在文本控件输出的时候,我们需要解析一下
CharseQuence cq=Html.from(str);
textView.setText(cq);
第一种情形和第二种情形可以结合起来使用:
String str = "后面的文字是加粗的红色文字:" + "<font color='#ff0000'><b>%s</b></font>";
String str2=String.format(str,"红色加粗文字");
输出与上面一样.
三.字符串资源的格式化
我们在字符串资源中同样可以通过占位符来给字符串传入参数,不过与第一种方式相比,占位符的格式略有不同
我们使用%[index]$[type]格式进行标记,index标记替换资源中第index个资源对应的位置,type则标示所要替换的资源的类型(s表示资源为字符串格式)
例如:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, my name is %1$s!</string>
<string name="app_name">MyString</string>
</resources>
TextView mytext = (TextView)findViewById(R.id.mystring);
String myname = getString(R.string.hello);
myname = String.format(myname, "yinghui");
mytext.setText(myname);
如果需要同时传入多个参数,则需要改变index,顺序一一对应。例如%1$s %2$s等等
四.带HTML标签的字符串资源的格式化
由于Android开发中的字符串资源是保存在XML文件中,因为Html中的<, >,&有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列。
例如:
我们需要在XML中保存这个字符串<b>我是加粗文字</b> 需要将<转义为<或者< ,需要将>转义为>或者>(这里也可以不转义)
代码:
<string name="format2"><b>我是加粗文字</b></string>
需要说明的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以“;”结束;
c. 单独的&不被认为是转义开始。
d. 区分大小写
常见的转义字符见下表:
| 字符 | 实体名字 | 十进制字符编号 |
| & | & | & |
| < | < | < |
| > | > | > |
| 单引号 | &apos | ' |
| " | " | " |
| 空格 |   | |
| 版权符 | © | © |
| 注册符 | ® | ® |
使用方法
String str=getString(R.string.format2);
CharseQuence cq=Html.from(str);
textView.setText(cq);
通过灵活运用以上字符串格式化的技巧,我们可以加快开发的效率,提高界面布局的美观程度。
参考资料:
http://blog.csdn.net/wsywl/article/details/6555959
http://blog.163.com/djx421%40126/blog/static/4885513620104212950216/
http://www.cnblogs.com/hyd309/p/3549076.html
Android字符串及字符串资源的格式化的更多相关文章
- Android字符串资源及其格式化
http://blog.csdn.NET/wsywl/article/details/6555959 在Android项目布局中,资源以XML文件的形式存储在res/目录下.为了更好的实现国际化及本地 ...
- android 时间获取以及时间格式化
Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现 现总结如下: 方法一: void getTime1 ...
- Android字符串,颜色,尺寸资源的使用
字符串.颜色.尺寸资源文件这三种文件位于res文件夹的values文件夹中,名称分别为strings.xml , colors.xml , dimens.xml下面是例子,首先来看字符串资源文件str ...
- Android开发中的日期格式化
下面的转换符来自Java,但是在android中同样可用.(以下表格内容来自互联网.) 常见日期格式化转换符 转换符 说 明 示 例 %te 一个月中的某一天(1-31) 2 %tb 指定语言环 ...
- python基础——字符串、编码、格式化
1.三种编码:ascii Unicode utf8 2.字符串和编码数字的两个函数:ord(字符转数字ord(‘A’)=65)和 chr(数字转字符chr(65)=A) 3.bytes存储编码,记住两 ...
- python_字符串,元组,格式化输出
一.字符串 1.字符串是有成对的单引号或者双引号括起来的.例如:name="张三",sex="女" 2.字符串的索引是从0开始的 3.字符串的切片 a.单个字符 ...
- 字符串与C51的格式化输出
一字符数组和字符指针: 字符指针可以用字符串对其直接初始化和随时赋值:而字符数组可以用字符串进行初始化,但不能用字符串对其进行随时赋值(但此时可以定义一个字符串指针指向字符数组,然后用字符串对指针随时 ...
- Python 基础之字符串操作,函数及格式化format
一.字符串的相关操作 1.字符串的拼接 + strvar1 = "我爱你,"strvar2 = "亲爱的姑凉"res = strvar1 + strvar2pr ...
- Android学习笔记字符串资源
在新建好的Android项目里res目录下有个字符串资源文件 在xml文件中引用字符串资源 string.xml <resources> <string name="mot ...
随机推荐
- Redis Quick Start [熟练版]
一.下载解压 wget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gzcd redis-stable ...
- java中null转换成其它类型
对null进行强转会不会抛错.测试结果是,如果把null强转给对象,是不会抛异常的,因为本身对象是可以为null的.但是如果是基本类型,比如 int i = (Integer)obj的强转,其实内部会 ...
- 18-10-30 Scrum Meeting 2
目录 站立式会议 工作记录 昨天完成的工作 1 主要完成了单词简单释义浏览和单词详细释义浏览的功能 并且已经测试和上传eolinker 2 3 主要搭建起爬虫的框架平台,并且测试了py连接服务器的功能 ...
- jdk动态代理 案例
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...
- java学习笔记—ServletConfig、ServletContext接口(13)
ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet> ...
- spring指导的index.html在spring文件夹中的位置
- python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)
一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...
- Mac上使用oh-my-zsh+iterm2
一.安装oh-my-zsh插件 1.1 下载 git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh 1.2创建新配置 如 ...
- robot framework学习笔记之一 资源文件(Resource)和外部资源(External Resources)
一.资源文件(Resource) 测试套件主要是存放测试案例,资源文件主要是用来存放用户关键字. 添加资源 在目录型的Project/Test Suite下单击鼠标右键,选择『New Resou ...
- lamp-linux2
LAMP编程之Linux(2) 一.进阶指令 1.du指令 作用:du表示directory used,显示出目录所占的磁盘空间大小的情况. 语法:#du -sh 目录路径 选项说明: -s:表示su ...