android plurals用法(单复数),真牛
zero 当语言需要特别对待0时(就想阿拉伯)
one 当语言需要特别对待1(就像英语里和其他语言里的1;在russian,任何以1结尾但是不是以11结尾的也使用这种情况)
two 当语言需要特别对待1(例如Welsh的2,或者Slovenian的102)
few 当语言需要特别对待small(例如Czech的2,3,4;或者以2,3,4结尾但是不是12,13,14的Po
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
listh)
many 当语言需要特别对待large(例如Maltese的11-99)
other 当语言没有要求对特定资
实例:
%d book
%d books
代码:
String bookNum = getResources().getQuantityString(R.plurals.book_number, 1, 2);
tv4.setText(bookNum);
String bookNum2 = getResources().getQuantityString(R.plurals.book_number, 2, 4);
tv5.setText(bookNum2);
注意:一定要在English语言环境下才起作用,语言为中文不起效。
当第二个参数为1时,会调用 book,为其他数值时,会调用books。
为什么只在英文语言环境下才起作用呢?
2、源码分析
======
@NonNull
public String getQuantityString(@PluralsRes int id, int quantity, Object… formatArgs)
throws NotFoundException {
//容易看出,先根据quantity决定要使用的字符串
String raw = getQuantityText(id, quantity).toString();
//再进行占位符的替换工作
return String.format(mResourcesImpl.getConfiguration().getLocales().get(0), raw,
formatArgs);
}
@NonNull
public CharSequence getQuantityText(@PluralsRes int id, int quantity)
throws NotFoundException {
//依赖于ResourceImpl的实现
return mResourcesImpl.getQuantityText(id, quantity);
}
跟进ResourceImpl中的getQuantityText函数:
CharSequence getQuantityText(@PluralsRes int id, int quantity) throws NotFoundException {
//得到规则
PluralRules rule = getPluralRule();
//rule.select根据规则,得到quantity对应的QuanitiyCode,即"zero"、“one”、"other"等
//之后再根据QuanitiyCode,的到具体的资源文件
CharSequence res = mAssets.getResourceBagText(id,
attrForQuantityCode(rule.select(quantity)));
if (res != null) {
return res;
}
//rule没能找到对应的QuanitiyCode时,就用"other"字段的定义
res = mAssets.getResourceBagText(id, ID_OTHER);
if (res != null) {
return res;
}
//上面寻找资源文件出问题,就抛出异常
throw new NotFoundException(“Plural resource ID #0x” + Integer.toHexString(id)
" quantity=" + quantity
" item=" + rule.select(quantity));
}
这里我们首先看一下getPluralRule函数:
private PluralRules getPluralRule() {
synchronized (sSync) {
if (mPluralRule == null) {
//单例模式,且和本地化有关,以Locales的第一个配置来初始化规则
mPluralRule = PluralRules.forLocale(mConfiguration.getLocales().get(0));
}
return mPluralRule;
}
}
android plurals用法(单复数),真牛相关推荐
- android plurals用法(单复数)
0.相关文章 android plurals用法 Android中的string资源占位符及Plurals string 1.使用 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的, ...
- android plurals用法
参考 android plurals用法 对一个给定的语言和数字来说,决定使用哪一个case的规则是很复杂的,所以android提供了方法getQuantityString(),它可以用来为你选择合适 ...
- android plurals用法(单复数),移动智能终端开发技术题库
String bookNum = getResources().getQuantityString(R.plurals.book_number, 1, 2); tv4.setText(bookNum) ...
- Android plurals
http://stackoverflow.com/questions/5651902/android-plurals-treatment-of-zero https://code.google.com ...
- 【转】 Android - LayoutInflate用法
[转自]http://blog.csdn.net/scut1135/article/details/7055461 通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Acti ...
- 关于TxQBService报的错,腾讯你真牛B啊
腾讯你真牛B啊,浏览器都7了,还特么的报这么低级的错误,还每10秒写一条windows日志,让人有什么心情用你的浏览器,滚. 转载于:https://www.cnblogs.com/Sabre/p/3 ...
- MTK驱动(77)---Android getevent用法
Android getevent用法 getevent命令用法如下: Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [ ...
- android连接程序,android程序如何连接真机进行测试
android 如何连真机测试 个人认为第三种方法更易理解 1. 设置android手机为USB调试模式.步骤: menu---> 设置 ---> 应用程序 ---> 开发 , 选择 ...
- android如何用真机测试,android studio如何使用真机测试app
在使用android studio进行项目的调试的时候,模拟器真的有点慢,有时还很卡,大家可能还是更想使用真机进行调试,那么下面来看看android studio如何使用真机测试app的教程. 第一大 ...
最新文章
- Python中的lambda是什么?
- 小工匠聊架构 - 缓存与数据库【双写不一致】【读写并发不一致】解决方案一览
- wpf中把按钮变成圆角
- AGC004(A~E)
- 需求调研 现有系统梳理_对速度的需求,访问现有数据的速度提高了1000倍
- imagesLoaded-检测图片是否正确加载的js插件
- Android图片加载之认识bitmap的四种加载方式
- 安装和配置SQL Server Reporting Services (SSRS)
- php日志数据统计,PHP统计Nginx日志的User Agent数据
- Spring Cloud中关于@EnableFeignClients注解的属性字段basePackages
- 函数的定义、返回值和参数
- java分页及返回数据封装实例
- 固定成本、可变成本、沉没成本、机会成本、边际成本
- 【计算机毕业设计】295演唱会购票系统的设计与实现
- React.createElement的理解使用
- CSS scroll-behavior 属性 — 纯 CSS 平滑滚动
- 展现学习能力,可能比展现能力更重要
- linux网卡断流测试,RouterOS断流解决办法探讨
- 高效管理,OA系统如何做到?
- 皇后大道东 皇后大道西