Android 中String的小秘密

平时我们都知道使用String的时候呢要避免在代码中硬编码,应该统一使用string.xml文件来保存我们在项目中用到的字符串,好处在于避免代码的复用,统一管理和根据不同地区加载不同语言等。

但是我们可以平时忽略它的一些用法:

1.string也可以使用参数

<string name="four">4</string>
<string name="family">我们家有%s个人</string>

使用:

getString(R.string.family, getString(R.string.four))

那如果有多个参数呢?

比如:

<string name="four">4</string>
<string name="one">1</string>
<string name="family">我们家有%1$s个人,我有%2$s个弟弟</string>

使用:

getString(R.string.family, getString(R.string.four), getString(R.string.one))

再有多个参数就以次类推。

2 string的国际化

如果你要创建一个English对应的string 资源:

这个时候你就可以写入你想翻译成的语言

<string name="samsung">我一部sumsung手机</string>

<string name="family">I have a sumsung phone</string>

这个时候我们可以发现sumsung并不需要再翻译成英文,对于不必要翻译的单词,我们可以用<xliff:g>标签来标注起来

使用之前我们要指出命名空间:<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

比如:

<string name="samsung">我一部<xliff:g>sumsung</xliff:g>手机</string>

ps:Google play控制台提供APP TRANSLATION SERVICE的翻译服务

还有一种情况,比如单数和复数的情况:

<string name="eat_one_apple">I eat one apple</string>
<string name="eat_ohter_apples">I eat three apples</string>

Android为这种情形提供了Plurals方法。

<plurals name="eat_apple">
    <item quantity="one">I eat one apple</item>
    <item quantity="other">I eat three apples</item>
</plurals>

获得该plurals方法如下,第二参数传入quantity,系统会根据quantity来选择对应的显示,该方法后也可以加入参数:

getResources().getQuantityString(R.plurals.eat_apple, 2)

而中文部分我们可以这么改:

<plurals name="eat_apple">
    <item quantity="one">我吃了一个<xliff:g id="Kindle">apple</xliff:g></item>
    <item quantity="other">我吃了很多<xliff:g id="Kindle">apples</xliff:g></item>
</plurals>

3 在string中加入特殊字符

我觉得这个大家用得比较多了,有的特殊字符是没有办法直接在写入string.xml中的,比如比如”<”,”>” 但可以用它对应的ASCII码来替代进行显示,比如要表达:@小明,则可以这样写:

<string name="call_xiaoming">@小明</string>

@对应的ASCII码为&#064

时间: 2024-10-20 21:33:49

Android 中String的小秘密的相关文章

【转】android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值 <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">TestExample01</stri

Android中 string.xml资源 如何添加参数?

在android 开发,我们通常会用string.xml资源去设置textview等控件的字符串.而值一般是与程序的运行结果无关的. 但有时需要根据运行的结果来显示到控件中,这时字符串资源就不能写死了. 可以用如下的表示方法来设置: %n$ms:s代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格. 如 :%1$2s表示:字符串资源的第1个string类型参数且该参数之后带有两个空格. %n$md:d代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格.

Android中String资源文件的format方法

很多时候我们感性Google在设计Android时遵守了大量MVC架构方式,可以让写公共代码.美工和具体逻辑开发人员独立出来.有关Android 的资源文件values/strings.xml中如何实现格式化字符串呢? <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">stringdemo</string&

Android中string.xml中的的标签xliff:g(转载)

转自:http://blog.csdn.net/xuewater/article/details/25687987 在资源文件中写字符串时,如果这个字符串时动态的,又不确定的值在里面,我们就可以用xliff:g这个标签,但是我写的资源文件一直有错误,如: <string name="chronometer_initial_format">Initial format: <xliff:g id="initial-format">%1$s<

android中string.xml中%1$s、%1$d等的用法

今天在研究前辈写的代码的时候,突然发现string里面出现了<stringname="item_recent_photo">最近拍摄%1$s</string>有点蒙圈,这个不是c语音里面的表示方式,就百度了一下,记... 在TextView中想要动态的显示某些值,用到%1$s,%1$d,先介绍一下: %n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置

Android中string.xml文件中设置部分字体颜色大小

1.在string.xml文件中: <string name="tips_all"><Data><![CDATA[清理进程:<font color="#7700ff00"><b>%1$d<br/></b></font>清理内存:<font color="#7700ff00"><b>%2$sMB</b></font&g

android中string.xml中%一$s、%1$d等的用法

%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 %n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00 比如 <string name="section_format">Hello World from section: %1$d</string&g

android 中string.xml中的%1$s

idView.setText(getString(R.string.estate_id, mCollectParamObj.getPlotNo())); estate_id:小区号%1$s %d   (表示整数) %f    (表示浮点数) %s   (表示字符串)

android获取string.xml的值

转自 http://blog.sina.com.cn/s/blog_618199e601011bst.html 为什么需要把应用中出现的文字单独存放在string.xml文件中呢? 一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家来自动选择相应的string.xml文件,这时手机界面就会显示出英文.这样做国际化非常的方便. 二:为了减少应用的体积