来自Rick Rogers的O'Reilly着作“Android应用程序开发”,John Lombardo,Zigurd Mednieks& Blake Meike,第23页:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
从第44页开始:
<application android:icon="@drawable/icon2">
上述每个片段中@
的含义是什么?
答案 0 :(得分:7)
在这种情况下:
android:layout_width="fill_parent"
属性android:layout_width
的值直接在引号fill_parent
内指定。在另一种情况下:
android:text="@string/hello"
属性android:text="@string/hello"
的值在别处指定。这由字符串开头的@
表示。在此示例中,它是@string/hello
。该值位于资源中。
来自Android开发者网站的The AndroidManifest.xml File中的“资源值”部分。可以从allclaws回答中的链接找到。
资源值以。表示 以下格式,
@ [包:]类型:名称
其中包名称可以省略 如果资源在同一个包中 作为应用程序,类型是一种类型 资源 - 例如“string”或 “drawable” - 而名字就是这个名字 识别特定资源。
答案 1 :(得分:6)
我倾向于将其视为与资源所在位置有关的缩写,因此:
在正常设置中,它将类似于:
@ drawable / icon = /PROJECT_ROOT/res/drawable/icon.png
@ string / hello = /PROJECT_ROOT/res/values/strings.xml(名为“hello”的元素)
这似乎是一个额外的麻烦,但它实际上运作得很好。它还支持国际化和不同的屏幕尺寸非常容易。您只需为不同的国家/地区代码和布局声明其他资源文件,Android就会为您选择最佳匹配项。
关于internationalization here的这份文件可能会让他们更清楚地明白为什么他们决定这样做。
答案 2 :(得分:0)