Resources中getString方法解析
2015-09-15 20:48
169 查看
在Android开发中,我们的字符串一般都是统一写在项目的res/values/strings.xml中,如果我们需要得到指定的字符串,一般使用getString方法来得到。
其实getString特别的有用,而且用法也很灵活,下面我们就来说说这个方法。
一、getString的常见用法
在Resources类中它有两种定义形式:
第一个比较简单,直接通过getString就可以得到指定id的字符串,第二个使用到了占位符,就是可以给前面的字符串的占位符中动态的填充指定的值,所以用法比较灵活,我们重点来说第二种。
1、整型填充符%n$md
代表输出的是整数,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格,也可以设为0m,在输出之前放置m个0
2、字符串填充%n$ms
代表输出的是字符串,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格。
3、浮点数填充%n$mf
代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00
也可简单写成:
%d (表示整数)
%f (表示浮点数)
%s (表示字符串)
下面有个小例子:
string.xml
MainActivity文件
布局文件就是几个TextView的垂直布局。
使用上面这些用法我们就可以动态的去向字符串中添加指定的内容。
二、与Html.fromHtml结合使用
getString与Html结合使用可以实现更加好的效果。
我们在上面的字符串如果想要设置部分字体的颜色或者字体什么的,我们就可以使用Html标签了,但是这些标签都需要使用转义字符。
转义字符表可看这篇文章:HTML转义字符大全
假如我们需要这个效果:
当前进度为55
那么string应该写成下面形式,要将html标签都转成转义字符
最终的运行效果为:
最后,我们来看看getString函数的源码:
从上面的代码我们就很容易看出,原理它使用的就是String.format进行格式化,具体String.format的详细用法可以参照下面这篇文章
String.format详解
其实getString特别的有用,而且用法也很灵活,下面我们就来说说这个方法。
一、getString的常见用法
在Resources类中它有两种定义形式:
public String getString(int id) public String getString(int id, Object... formatArgs)
第一个比较简单,直接通过getString就可以得到指定id的字符串,第二个使用到了占位符,就是可以给前面的字符串的占位符中动态的填充指定的值,所以用法比较灵活,我们重点来说第二种。
1、整型填充符%n$md
代表输出的是整数,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格,也可以设为0m,在输出之前放置m个0
2、字符串填充%n$ms
代表输出的是字符串,n代表是第几个参数,m为数据的位数,如果数据位数不够,在输出之前放置空格。
3、浮点数填充%n$mf
代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00
也可简单写成:
%d (表示整数)
%f (表示浮点数)
%s (表示字符串)
下面有个小例子:
string.xml
<string name="test1">当前进度为:%1$05d</string> <string name="test2">当前已经发现 %1$d %2$s</string> <string name="test3">当前数字为 %1$3.4f </string>
MainActivity文件
package com.xxx.cn.getstringtest; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private TextView mTestText1; private TextView mTestText2; private TextView mTestText3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTestText1 = (TextView) findViewById(R.id.test1); mTestText2 = (TextView) findViewById(R.id.test2); mTestText3 = (TextView) findViewById(R.id.test3); mTestText1.setText(getString(R.string.test1, 55)); mTestText2.setText(getString(R.string.test2, 55, "项")); mTestText3.setText(getString(R.string.test3, 87.44)); } }
布局文件就是几个TextView的垂直布局。
使用上面这些用法我们就可以动态的去向字符串中添加指定的内容。
二、与Html.fromHtml结合使用
getString与Html结合使用可以实现更加好的效果。
我们在上面的字符串如果想要设置部分字体的颜色或者字体什么的,我们就可以使用Html标签了,但是这些标签都需要使用转义字符。
转义字符表可看这篇文章:HTML转义字符大全
假如我们需要这个效果:
当前进度为55
那么string应该写成下面形式,要将html标签都转成转义字符
<string name="test4">当前进度为<font color=\"red\">%1$d</font></string> mTestText4.setText(Html.fromHtml(getString(R.string.test4, 55)));
最终的运行效果为:
最后,我们来看看getString函数的源码:
public String getString(int id, Object... formatArgs) throws NotFoundException { String raw = getString(id); return String.format(mConfiguration.locale, raw, formatArgs); }
从上面的代码我们就很容易看出,原理它使用的就是String.format进行格式化,具体String.format的详细用法可以参照下面这篇文章
String.format详解
相关文章推荐
- 如何创建用户组和用户
- [转]Android 中fill_parent与wrap_content的区别
- 《增长黑客》:中美两国近年来互联网产品的设计、运营、推广方面的好的坏的案例的整理。三星推荐
- 2386 Lake Counting【dfs】
- 关于同步操作和数据同步的问题
- 蓝懿iOS培训日志13 自习日小结
- Linux 新手应该知道的 26 个命令
- vi/vim基本使用方法
- CSS3动画效果
- 华为oj 字符串合并处理
- 常用函数[不断添加]
- A. Multiplication Table
- Qt Creator设置窗口布局
- tomcat和java ee的安装和配置!
- MT6735系列及MT6753系列多合一驱动编译手册(一)
- VmWare下扩展虚拟机内系统centos6.6的硬盘分区空间(图文讲解)
- BZOJ 1127 [POI2008]KUP 最大子矩阵
- Xcode6 - 更改项目Copyright
- 原根
- UI03_UITextField