Android strings 的那些小事
2016-11-07 09:00
337 查看
Gtechoogle 2016-11-04 08:10
为什么说是小事呢?因为不这样做也不会出问题,但是知道了这些小事,会让你今后的开发更加顺畅!
不要重复使用
不要使用一个字串在不同的画面中
需要创建一个加载的 Dialog 在登入登出的画面中,两个都要显示相同的字串,然后在代码中都引用这个 string - R.string.loading
之后你发现需要改成不一样的,然后你不得不创建两个新的字串,同时不得不去修改 java code。但是如果你一开始就定义成两个的话,那么你就只需要去修改 strings.xml。
你无法预知你的应用会需要支持哪些语言。可能在一种语言下,你只需要用同一个字串既可以满足不同的场景,但是在另一种语言下,可能需要不同的字串来满足不同的场景了。
上面的例子就是,在英语中,"Yes" 可以满足 R.string.download_file_yes and R.string.terms_of_use_yes strings 的场景,但是在乌克兰语中,这两个 "Yes" 所对应的场景就会是不同的字串。
分组独立
把每个相同画面的字串定义,都使用一样的前缀,并且用注释标明
给相同画面的字串添加用样的前缀,可以帮组你立刻看到后知道是用在哪里。
有序清晰的 string.xml 文件可以很容易维护,特别是翻译成不同语言后,面对天书一般的阿拉伯文,也可以知道哪是哪。
这里你也可以创建多个 strings.xml,比如一个画面创建一个 - settings-strings.xml,profile-strings.xml。 但是通常来说一个应用可能有10几个画面,如果每个都创建一个的话,看上去更混乱。
拼接字串
通过使用Resources#getString(int id, Object… formatArgs) 来拼接字串
千万不要用+的方式来拼接字串,因为不同语言下,可能拼出来的结果大相径庭。
正确的做法是使用 Resources#getString(int id, Object… formatArgs)]
复数化
使用 Resources#getQuantityString (int id, int quantity) 去复数化字串。
不要直接在 java 代码中做复数化,同样也是因为不同的语言下,语法会是完全不同的。
正确的方式是使用 Resources#getQuantityString (int id, int quantity] 来复数化。
高亮文字
使用 html 的方式来高亮静态文字
如果你需要改变在 TextView 中文字的颜色 - ForegroundColorSpan 并不是最好的选择,因为这个高亮的做法是通过索引的方式,但是在某些语言下就会出问题。最好的方式是使用 html 字体颜色标签。
假设有一个文字 "Discover and play games.",然后 "Discover" 和 "Play" 需要高亮且为蓝色。
Android
编程语言
HTML
Java
为什么说是小事呢?因为不这样做也不会出问题,但是知道了这些小事,会让你今后的开发更加顺畅!
不要重复使用
不要使用一个字串在不同的画面中
需要创建一个加载的 Dialog 在登入登出的画面中,两个都要显示相同的字串,然后在代码中都引用这个 string - R.string.loading
之后你发现需要改成不一样的,然后你不得不创建两个新的字串,同时不得不去修改 java code。但是如果你一开始就定义成两个的话,那么你就只需要去修改 strings.xml。
你无法预知你的应用会需要支持哪些语言。可能在一种语言下,你只需要用同一个字串既可以满足不同的场景,但是在另一种语言下,可能需要不同的字串来满足不同的场景了。
上面的例子就是,在英语中,"Yes" 可以满足 R.string.download_file_yes and R.string.terms_of_use_yes strings 的场景,但是在乌克兰语中,这两个 "Yes" 所对应的场景就会是不同的字串。
分组独立
把每个相同画面的字串定义,都使用一样的前缀,并且用注释标明
给相同画面的字串添加用样的前缀,可以帮组你立刻看到后知道是用在哪里。
有序清晰的 string.xml 文件可以很容易维护,特别是翻译成不同语言后,面对天书一般的阿拉伯文,也可以知道哪是哪。
这里你也可以创建多个 strings.xml,比如一个画面创建一个 - settings-strings.xml,profile-strings.xml。 但是通常来说一个应用可能有10几个画面,如果每个都创建一个的话,看上去更混乱。
拼接字串
通过使用Resources#getString(int id, Object… formatArgs) 来拼接字串
千万不要用+的方式来拼接字串,因为不同语言下,可能拼出来的结果大相径庭。
正确的做法是使用 Resources#getString(int id, Object… formatArgs)]
复数化
使用 Resources#getQuantityString (int id, int quantity) 去复数化字串。
不要直接在 java 代码中做复数化,同样也是因为不同的语言下,语法会是完全不同的。
正确的方式是使用 Resources#getQuantityString (int id, int quantity] 来复数化。
高亮文字
使用 html 的方式来高亮静态文字
如果你需要改变在 TextView 中文字的颜色 - ForegroundColorSpan 并不是最好的选择,因为这个高亮的做法是通过索引的方式,但是在某些语言下就会出问题。最好的方式是使用 html 字体颜色标签。
假设有一个文字 "Discover and play games.",然后 "Discover" 和 "Play" 需要高亮且为蓝色。
Android
编程语言
HTML
Java
相关文章推荐
- 不可不知的Android strings.xml那些事
- 关于Android直播那些小事-推流2完结
- android之有关Activity的那些小事
- 不可不知的 Android strings.xml 那些事
- 关于Android直播那些小事-推流1
- android广播和service的那些小事
- 关于Android实现 退出登录那些小事?
- Android 如何在strings.xml中放置html文本
- 动态修改android中strings.xml中的value值
- Android NDK error in strings.h, possibly due to error in size_t
- 还在杀进程?Android你不知道的那些事儿
- 修改Android中strings.xml文件, 动态改变数据
- Android Service那些不得不说的事-之一
- android make编译的那些事
- android 调用字符串资源 res/values/strings.xml 的几种方法
- Android系统那些属性
- Android strings.xml文件定义字符串中的标签
- Eclipse开发android的那些破事
- android JNI那些事
- android strings.xml文件中%s变量格式