android 国际化 res/value
2013-03-21 13:12
302 查看
Android 国际化
当手机切换语言时自动调用相应的配置字符串国际化:
只要在 res 文件夹下新建对应语言的 values 文件夹就好了,
如,英语环境下的,文件夹命名为:values-en
美国英文环境:values-en-rUS
en 语言简码 US地区/国家简码 r固定
中文环境为:values-zh
大陆地区中文环境:
在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values
当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。
若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。
图片国际化
同理。
在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片
新建 drawable-en 作为英语环境下的图片
在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建三个默认语言环境的文件夹:
drawable-hdpi
drawable-ldpi
drawable-mdpi
分别用于存放高、中。低分辨率的图片。Android 系统会根据手机的分辨率,而自动从不同的对应的某一个文件夹下去加载图片。
同样,它们也可以国际化,命名规则如:
drawable-zh-hdpi
drawable-en-ldpi
drawable-en-rUS-mdpi
代码中使用 国际化
textView.setText(context.getString(R.string.test));
有时候在xml中设置了相应的语言,但是为什么当我们更改语言之后,UI显示仍然不起作用?
不要怀疑是系统出了问题,这与我们在代码中引用values/string.xml中字符串的方式有关。
错误的方式:
1. 声明全局变量 private static String tempStr;
2. 在onCreate方法中对该变量赋值 tempStr = context.getString(R.string.test);
3. 在更新UI的方法(非onCreate方法)中引用该变量。 textView.setText(tempStr);
原因是由于,当修改本地语言时,onCreate不会再被执行一遍. 变量tempStr 依然会使用页面刚启动时加载的默认英语。
正确的方式:
直接进行第三步:textView.setText(context.getString(R.string.test));
相关文章推荐
- [AIR接入Android 平台]处理res资源之文字国际化
- android 中resources管理(主要存在于res/value文件夹中)
- 编译时动态配置 Android resValue / BuildConfig / Manifest
- 滴滴国际化项目 Android 端演进
- out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from
- Android深入探究笔记之二十六 -- 资源国际化 实现中英文等不同版本
- setText() 引起 android.content.res.Resources$NotFoundException
- Android App的国际化-代码里实现
- out/target/common/obj/PACKAGING/public_api.txt android.view.KeyEvent.KEYCODE_has changed value from
- Android:res之shape制作圆角、虚线、渐变
- android国际化(中文英文)
- Unity在android平台的游戏名称国际化
- Andriod的国际化-android学习之旅(五十八)
- Androidz之字符串国际化问题
- android 隐藏API调用举例(国际化,多语言)
- android res文件夹下的各个文件夹的作用
- android资源之res/raw和assets的异同
- Android 中从res/values/strings.xml中读取具体的字符串的方法
- [Android fix] java.exe finished with non-zero exit value 2
- Android 遍历Hashmap里面的key 和value