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 ...
随机推荐
- idea中代码补全
在IDEA中,默认的代码自动提示不够智能,现在配置成更加智能的方式. File-Settings-Editor-General-Code Completion中 把最上面的大小写敏感度改成none,下 ...
- 动态规划 HDU1231-------最大连续子序列
Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...
- 测试嵌入GeoGebra网页
使用 http://ggbstudy.top/tools/ggb2html/ 将GGB文件免费托管,然后在博客内容中点击“HTML”按钮插入GGB网页地址: <iframe src=" ...
- [转载]SQL Server行列转换实现
可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_ ...
- solrconfig.xml配置详解
solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置. 可以在tomcat的安装路径下找到这个文件C:\Program File ...
- django 的 ajax 方式上传图片
页面代码: <html> <!-- 引入相关的js文件,相对路径 --> <script type="text/javascript" ...
- php 命令行脚本运行php文件简单演示
众说周知,php在web服务器领域有着很重要的角色,可是它不仅仅在web领域,只是在web领域表现更为优秀! 它基本有三种用途: web服务端脚本的编写 应用程序图形界面(类似windows自带的计算 ...
- java 实验6 图形用户界面设计试验(2)
共两大题 窗体实现(略去测试类即 实例化自定义窗体) 小结: 1. JRadioButton 单选按钮 ButtonGroup 按钮集合(加入单选按钮) 清空选项需让ButtonGroup调用clea ...
- JavaWeb -JDBC使用(数据库-javaweb连接)
使用JDBC四个大类 1. DriverManager:管理jdbc驱动 2. Connection:连接(通过DriverManager产生) 3. Statement/PreparedStatem ...
- Mybatis 类的转换器
想一个事情 ,例: 我数据库的表 定义了一个表student 里面有一个字段 stu_sex int类型 可是我对应的实体类是 String 类型或者其他类型 这个时候 实体类与数据库表肯定对应不 ...