为什么Android文档中有不同的id语法?

时间:2010-04-07 20:50:08

标签: android

Android文档中的

This page定义了一个元素id,如下所示:

<TextView android:id="@+id/label" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:text="Type here:" />

this page将其定义为:

<EditText id="text"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="Hello, World!" />

在我看到第二个例子之前,我以为我对正在发生的事情有了一个很好的理解。在第一种情况下,你需要+字符,以便将id'label'添加到R文件中,对吗?在第二种情况下,EditText的id是否会被添加到R文件,因为它不包含+字符?

此外,第二个示例不包含id上的android命名空间。是否拥有Android名称空间会影响该ID是否会添加到R文件中?

感谢您的任何澄清。

4 个答案:

答案 0 :(得分:4)

此格式没有android:namespace

 id="text"

来自早期版本的Android SDK。

答案 1 :(得分:3)

您的初步评估是正确的。值得注意的是第二个id标签

<EditText id="text"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="Hello, World!" />

缺少android:命名空间,因此它实际上不是android xml标记。第一个是如何将该视图的id添加到R文件的示例,以便您可以在代码中访问它。说实话,我不确定第二个例子中id的目的是什么*,但我知道android不会知道如何处理它。第一个是正确的语法。

*这只是猜测,但我愿意打赌这是一个错误,有人没有注意到或者不关心修复,因为他们试图说明别的东西。

答案 2 :(得分:1)

  

加号(+)表示这是一个必须创建并添加到我们资源的新资源名称(在R.java文件中)。 Android框架提供了许多其他ID资源。引用Android资源ID时,您不需要加号,但必须添加android包命名空间,如下所示:

   机器人:ID = “@机器人:ID /空”

取自身份证部分的Declaring Layout | Android Developers

然而,在你的第二个例子中,在@android:id/之前没有提供text所以说实话,我以前从未见过这种符号,并想知道这是否可能是作者的错字一部分。

答案 3 :(得分:1)

第二个例子是错误的。该属性总是android:id,值应该是@ + id / myId(创建一个名为“myId”的新id)或@ id / myId(使用已经定义的名为“myId”的id。)使用@android :id / theId允许你使用android平台定义的id。