2009-06-19 140 views
6

从O'Reilly出版的 “Android应用开发”,由里克·罗杰斯,约翰·隆巴多,Zigurd Mednieks &布雷克美克,23页:@在AndroidManifest.xml文件

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 

接第44页:

<application android:icon="@drawable/icon2"> 

@在以上每个片段中的含义是什么?

回答

7

在这种情况下:

android:layout_width="fill_parent" 

的属性,android:layout_width值,直接指定了引号内,fill_parent。在另一种情况下:

android:text="@string/hello" 

为属性,android:text="@string/hello"值,在其他地方指定。这在字符串的开始处由@指示。在这个例子中它是@string/hello。该值位于资源中。

来自Android Developers站点的The AndroidManifest.xml File中的“资源值”部分。从链接中找到allclaws答案。

资源值在 以下格式表示,

@ [包:]类型:命名

其中包名称可以省略 如果资源是在同一个包 如应用程序类型是 资源类型 - 例如“字符串”或 “可绘制” - 名称是 标识特定资源的名称。

6

我倾向于认为它是具有与在资源所在做的缩写,所以:

在常规设置中,这将是这样的:

@绘制/图标=/PROJECT_ROOT/RES /绘制/的icon.png

@字符串/你好= /PROJECT_ROOT/res/values/strings.xml(名为 “你好” 的元素)

这似乎是多余的麻烦,但它的实际工作很不错。它也支持国际化和不同的屏幕尺寸非常容易。您只需为不同的国家/地区代码和布局声明其他资源文件,Android就会为您选择最适合的文件。

这篇关于internationalization here的文档可能会让它更清楚为什么他们决定这么做。