硬编码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资源文件,然后从您的布局中引用它们。

  1. 这使您可以更新每个相同单词的出现
    通过编辑你的strings.xml文件来同时布局。
  2. 这对supporting multiple languages也非常有用,因为可以为每种受支持的语言使用单独的strings.xml file
  3. 具有@string系统的实际点请阅读本地化文档。 它可以让你轻松地find你的应用程序中的文本,并在以后翻译。
  4. string可以很容易国际化,允许您的应用程序support multiple languages with a single application package file (APK) support multiple languages with a single application package file

优点

  • 比方说,你在代码中的10个不同的位置使用相同的string。 如果你决定改变它呢? 而不是寻找它在项目中被使用的地方,而只是改变它一次,并且变化反映在项目中的任何地方。
  • string不会混淆您的应用程序代码,使其清晰易维护。