Resources中getString方法解析
来源:互联网 发布:上网便宜的手机卡知乎 编辑:程序博客网 时间:2024/06/03 17:12
在Android开发中,我们的字符串一般都是统一写在项目的res/values/strings.xml中,如果我们需要得到指定的字符串,一般使用getString方法来得到。
其实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详解
- Resources中getString方法解析
- Resources 方法解析
- getString()方法
- getString()方法
- Android 中 getString() 方法的小知识点
- Resources类中getString (int ResID)与getText (int ResID)的区别
- android Resources getString with format arguments
- OCCI开发中getString()方法使用中的问题
- commons-fileupload组件中的FileItem中getString()方法乱码问题
- getString()方法用法详解
- 安卓解析中JSON中getString() 和optString()的区别
- unity中运用Resources.Load的方法
- JSON中getString() 和optString()
- JSON中getString() 和optString()
- getString()方法和getObject()方法区别
- PL/SQL表中date类型的字段用getString方法取出之后的格式化为日期的方法
- ResultSet 中的getString()方法的用法?
- 【转】ResultSet.getInt 和 getString方法
- 华为oj 字符串合并处理
- iOS项目开发实战——使用ShareSDK进行QQ和微信分享
- hdu 1042 N!
- 如何创建用户组和用户
- VB6基本数据库应用(八):模糊搜索与基于范围的搜索
- Resources中getString方法解析
- BZOJ 1125 [POI2008]Poc Treap+Hash
- JavaScript学习笔记8-jQuery异步调用方式
- hdu 4745 区间回文最长长度
- Android之Xutils
- ubuntu忘记密码
- 第一篇博客
- 紫书 习题 9-8 uva1632
- 安卓:回退栈,类似新闻的布局界面