硬编码string“第三行”,应该使用@string资源
我是一个初学者的android开发者,我试图在eclipse中运行这个线性布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="red" android:gravity="center_horizontal" android:background="#aa0000" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="green" android:gravity="center_horizontal" android:background="#00aa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="blue" android:gravity="center_horizontal" android:background="#0000aa" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> <TextView android:text="yellow" android:gravity="center_horizontal" android:background="#aaaa00" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <TextView android:text="row one" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row two" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row three" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:text="row four" android:textSize="15pt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout>
而且,我注意到:
1) android:text="Yellow"
下的黄线android:text="Yellow"
2) android:text="row four"
下的黄线android:text="row four"
三angular警告说[I18N] Hardcoded string "Yellow", should use @string resource "
和警告的其余部分相同。任何build议?
硬编码string到你的布局文件是不好的做法。 您应该将它们添加到string资源文件,然后从您的布局中引用它们。
这允许您通过编辑strings.xml文件来同时更新所有布局中“黄色”单词的出现。
这对支持多种语言也非常有用,因为可以为每种受支持的语言使用单独的strings.xml文件。
例如:保存在res / values / strings.xml中的XML文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="yellow">Yellow</string> </resources>
此布局XML将string应用于View:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/yellow" />
同样的颜色应该存储在colors.xml中,然后用@ color / color_name来引用
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="Black">#000000</color> </resources>
你必须在strings.xml下创build它们
<string name="close">Close</string>
你必须像这样replace和引用
android:text="@string/close"/>
即使XML文件指出了strings.xml,也不要使用@strings,否则它将不起作用。
将string硬编码到布局文件/代码中是不好的做法。 您应该将它们添加到string资源文件,然后从您的布局中引用它们。
- 这使您可以更新每个相同单词的出现
通过编辑你的strings.xml
文件来同时布局。 - 这对
supporting multiple languages
也非常有用,因为可以为每种受支持的语言使用单独的strings.xml file
- 具有
@string
系统的实际点请阅读本地化文档。 它可以让你轻松地find你的应用程序中的文本,并在以后翻译。 - string可以很容易国际化,允许您的应用程序
support multiple languages with a single application package file
(APK)support multiple languages with a single application package file
。
优点
- 比方说,你在代码中的10个不同的位置使用相同的string。 如果你决定改变它呢? 而不是寻找它在项目中被使用的地方,而只是改变它一次,并且变化反映在项目中的任何地方。
- string不会混淆您的应用程序代码,使其清晰易维护。