把app的字符串放到另外一个文件中是一个好习惯。Android用android工程中的资源文件夹让这件事变的很简单。
如果使用Android SDK Tools创建工程,这个工具会在工程的根目录下创建res/文件夹。在res/文件夹下面有各种类型的资源的字文件夹。有一些默认的文件比如res/values/string.xml,它是用来存放字符串的。
创建本地文件夹和字符串文件
为了支持更多语言,在res/中创建其他的values扩展的文件夹,就是就是在文件夹名后加上一个横线和国家的ISO码。例如,values-es/就是包含代码为"es"的资源文件夹。Android在运行时根据设置加载合适的资源。
一旦你觉得了需要支持的语言,就可以创建资源的子文件夹和字符串文件了。例如:
MyProject/
res/
values/
strings.xml
values-es/
string.xml
values-fr/
string.xml
把字符串值添加到合适的文件中
在运行时,Android根据本地用户的设置来使用合适的字符串资源
例如,下面是不同语言对应的不同的字符串
英语(默认),/values/string.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="title">My Application</string> 4 <string name="hello_world">Hello World!</string> 5 </resources>
西班牙语, /values-es/strings.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="title">Mi Aplicación</string> 4 <string name="hello_world">Hola Mundo!</string> 5 </resources>
法语,/values-fr/strings.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="title">Mon Application</string> 4 <string name="hello_world">Bonjour le monde !</string> 5 </resources>
注意:你可以使用本地化标识(或者任何配置标识)在任何类型的资源上,比如你想要提供本地化的图片。更多信息,参考Localization.
使用字符串资源
可以使用资源名来在源代码或者其他XML文件中引用字符串资源,资源名在<string>元素的name属性中定义。
在源代码中,可以使用语句R.string.<string_name>来引用字符串资源。有很多方法来引用字符串资源
例如:
1 // Get a string resource from your app's Resources 2 String hello = getResources().getString(R.string.hello_world); 3 4 // Or supply a string resource to a method that requires a string 5 TextView textView = new TextView(this); 6 textView.setText(R.string.hello_world);
在xml文件中,可以使用@string/<string_name>来引用字符串属性。
例如:
1 <TextView 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 android:text="@string/hello_world" />