getQuantityString()的作用及用法
在英语里,单复数的书写形式是不同于其他语言的(如汉语)。如:一张纸就是a paper,但是两张纸 则是two papers。
而在程序中,显然用if语句来判断让人看起来很Low(当然,从程序来讲,也有些“兴师动众”的感觉),所以,google推出了更加有高逼格的方法getQuantityString()来判断字符串的取值,好了,下面来介绍下它的用法。
首先,需要在String资源文件里创建plurals资源,并且给他一个name属性。而资源里面则是一个个Item。如下:
<plurals name="subtitle_plural">
<item quantity="one">%1$s crime</item>
<item quantity="other">%1$s crimes</item>
</plurals>
在这里需要知道的是,quantity是有多个值的,每个值代表了不同的含义,如下:
值 |
描述 |
zero |
语言需要对数字0进行特殊处理。(比如阿拉伯语) |
one |
语言需要对类似1的数字进行特殊处理。(比如英语和其它大多数语言里的1;在俄语里,任何以1结尾但不以11结尾的数也属于此类型。) |
two |
语言需要对类似2的数字进行特殊处理。(比如威尔士语) |
few |
语言需要对较小数字进行特殊处理(比如捷克语里的2、3、4;或者波兰语里以2、3、4结尾但不是12、13、14的数。) |
many |
语言需要对较大数字进行特殊处理(比如马耳他语里以11-99结尾的数) |
other |
语言不需要对数字进行特殊处理。
|
其次,在代码中,用getQuantityString()方法来得出你想要的。如下:
int crimeSize = CrimeLab.get(getActivity()).getCrimes().size();
String subtitle = getResources()
.getQuantityString(R.plurals.subtitle_plural, crimeSize, crimeSize);
此时,因为我上面就写了one和other两种情况,所以,这里得出的结果也就是两种情况了。当为1时,显示1crime,数量为其他数值时,显示Xcrimes。
最后,还要说明下,可能有的同学运行后getQuantityString()方法仍没起作用,一直显示的是other的结果,那是因为我们的运行环境是中文,把手机的语言改为English就可以了。
plurals