2010-04-07 39 views
4
的Android文档中

This page定义了一个元素ID如下:为什么Android文档中有不同的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文件中?

感谢您的任何澄清。

回答

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不知道该怎么做。第一个是正确的语法。

*这只是推测,但我敢打赌,这是一个错别字,有人没有注意到或不在意修复,因为他们试图说明别的东西。

1

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

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

来自Declaring Layout | Android Developers在ID部分。

但是,在第二个示例中,在text之前没有提供@android:id/,所以要非常诚实,我之前从未看到过这个符号,并想知道这可能是作者的错字。

4

此格式,而不在android:命名空间

id="text" 

是从Android SDK的早期版本。

1

第二个例子是错误的。该属性始终是android:id,值应该是@ + id/myId(用于创建称为“myId”的新ID)或@ id/myId(用于使用已定义的名为“myId”的ID)。使用@android :id/theId让你使用android平台定义的id。

相关问题