您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: