代码之家  ›  专栏  ›  技术社区  ›  CW Holeman II

@在androidmanifest.xml文件中

  •  6
  • CW Holeman II  · 技术社区  · 15 年前

    摘自Rick Rogers,John Lombardo,Zigurd Mednieks&Blake Meike的O'Reilly书《Android应用程序开发》,第23页:

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

    第44页:

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

    这是什么意思 @ 在上面的每一个片段中?

    3 回复  |  直到 11 年前
        1
  •  7
  •   Community Johnny    7 年前

    在这种情况下:

    android:layout_width="fill_parent"
    

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

    android:text="@string/hello"
    

    属性的值, android:text="@string/hello" ,在别处指定。这由 @ 在字符串的开头。在这个例子中,它是 @string/hello . 值在资源中。

    从中的“资源值”部分 The AndroidManifest.xml File allclaws 回答。

    资源值表示为 以下格式:

    @[包:]type:名称

    可以省略包名称的位置 如果资源在同一个包中 作为应用程序,类型是 资源,如“字符串”或 “可提取”和“名称”是指 标识特定资源。

        2
  •  6
  •   allclaws    15 年前

    我倾向于认为它是一个缩写,与资源所在地有关,所以:

    在正常设置中,它类似于:

    @drawable/icon=/project_root/res/drawable/icon.png

    @string/hello=/project\root/res/values/strings.xml(一个名为“hello”的元素)

    这似乎是额外的麻烦,但实际上效果很好。它还使得对国际化和不同屏幕大小的支持变得相当容易。您只需为不同的国家代码和布局声明额外的资源文件,Android会为您选择最匹配的资源。

    此文档关于 internationalization here 可能更清楚地说明为什么他们决定这样做。