Android 开发中应该知道的关于strings.xml的事

Android 开发中应该知道的关于strings.xml的事

避免过度复用

不要复用不同页面上的字符串

1.假设你现在在Sign In与Sign Up两个界面上都设置了一个加载提示框,因为两个都是用于提示正在加载中的,因此你打算使用相同的提示语 —— R.string.loading

<string name="loading">Loading please wait…</string>

不过后来PM说这样实在太不友好了,因此你打算用两个更具体点的提示语来代替,于是你你将你的strings.xml修改成了下面这样

<string name="sin_in_loading">Signing in…</string>
<string name="sin_up_loading">Signing up…</string>

合理分割

对于相同页面中的字符串以前缀与注释分割

1.添加前缀到字符串上有助于辅助快速地识别字符串是属于哪个页面的。

2.清晰的字符串的区分也有助于未来对国际化的支持,可以按照页面来逐个地进行多语言支持。

Format

使用 Resources#getString(int id, Object...formatArgs)来格式化字符串

尽量避免使用+来连接字符串,因为在不同的语言里对于词汇的划分是不一致的。

<string name="login_welcome_back">- welcome back</string>
String username="Xxx Xxx";
String result=username+" "+getString(R.string.login_welcome_back);
//result "Xxx Xxx - welcome back"

正确的方法是使用Resources#getString(int id, Object… formatArgs).

<string name="login_welcome_back">%s - welcome back</string>
String username="Xxx Xxx";
String result=getString(R.string.login_welcome_back,username);
//result "Xxx Xxx - welcome back"

Plurals:复数处理

使用Resources#getQuantityString (int id, int quantity)来处理复数字符串

尽量不要在Java代码中判断是否需要使用复数表述,同样是因为不同的语言对于复数表述的文法规则是不一样的。

<string name="minute">minute</string>
<string name="minutes">minutes</string>
String text;
int minutes = Calender.getInstance().get(Calender.MINUTE);
if(minutes == 0){
    text = getString(R.string.minute);
}else{
    text = getString(R.string.minutes);
}

正确的方法是使用Resources#getQuantityString (int id, int quantity)来进行处理

<plurals name="minutes">
    <item quantity="one">minute</item>
        <item quantity="other">minutes</item>

</plurals>
int minutes = Calender.getInstance().get(Calender.MINUTE);
String text=getResources().getQuantityString(R.plurals.minutes,minutes);

Words highlighting:单词高亮

使用HTML文法规范来进行单词高亮

如果我们希望在TextView中修改一些单次的颜色,可能ForegroundColorSpan不一定是最佳的选择,同样是因为基于下标的高亮策略可能在不同的语言中出现问题。最好的呢,也还是使用HTML的字体颜色标签进行控制,譬如你希望在Discover and play games这一段话中需要将Discoverplay进行高亮展示:

<string name="html_text" formatted="false">
<![CDATA][<font color=\'#28b5f5\'>Discover</font> and <font color=\'#28b5f5\'>play</font> games.]
</string>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值