@id/和@+id/有什么区别?
在@+id/中,加号+指示创建一个新的资源名并添加到R.java文件中,但是@id/呢?从ID的文档:当引用一个Android资源ID时,你不需要加号,但必须添加Android包的命名空间,如下所示:
android:id="@android:id/list"
但是在下图中,Eclipse并没有建议使用任何@android:id/。
@id/和@android:id/相同吗?
@id/和@+id/有什么区别?
在@+id/中,加号+指示创建一个新的资源名并添加到R.java文件中,但是@id/呢?从ID的文档:当引用一个Android资源ID时,你不需要加号,但必须添加Android包的命名空间,如下所示:
android:id="@android:id/list"
但是在下图中,Eclipse并没有建议使用任何@android:id/。
@id/和@android:id/相同吗?
当前回答
如果视图项执行相同的操作,您可以对任何布局中的每个条目使用@+id,因为在编译多个@+id/foo时,R.java文件只创建一个枚举。例如,如果我在每个页面上都有一个保存按钮,执行相同的操作,我使用android:id="@+id/button_save"在每个布局。R.java文件只有一个button_save条目。
其他回答
+号是将id添加到资源id列表的快捷方式。否则,您需要将它们保存在这样的xml文件中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="my_logo" type="id"/>
</resources>
很简单:
“@ +……”-创建新的
“@……”-现有链接
来源:https://developer.android.com/guide/topics/resources/layout-resource.html idvalue
你引用Android资源,这些资源已经在Android系统中定义了,使用@android:id/..当访问您在项目中定义/创建的资源时,使用@id/..
更多信息
根据你在聊天中的澄清,你说你有一个这样的问题:
如果我们使用android:id="@id/layout_item_id",这是行不通的。取而代之的是@+id/,那么这里有什么不同呢?这就是我最初的问题。
好吧,这取决于上下文,当你使用android:id的XML属性时,你指定了一个新的id,并指示解析器(或称其为构建器)在R.java中创建一个新条目,因此你必须包含一个+号。
而在另一种情况下,像android:layout_below="@id/myTextView",你引用的是一个已经创建的id,所以解析器链接到这个已经创建的id在R.java。
更多信息
正如你在聊天中所说,注意android:layout_below="@id/myTextView"不会识别id myTextView的元素,如果它写在你正在使用它的元素之后。
@+id和@id的区别是:
@+id用于在R.java文件中为视图创建id。 @id用于引用在R.java文件中为视图创建的id。
我们使用@+id与android:id="",但如果id没有创建,我们在创建之前引用它(前向引用)。
在这种情况下,我们使用@+id来创建id,在定义视图时,我们必须引用它。
请参考以下代码:
<RelativeLayout>
<TextView
android:id="@+id/dates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/spinner" />
<Spinner
android:id="@id/spinner"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/dates"
android:layout_alignParentRight="true" />
</RelativeLayout>
在上面的代码中,Spinner @+id/ Spinner的id是在另一个视图中创建的,在定义Spinner时,我们引用了上面创建的id。
如果我们在视图被创建之前使用视图,我们必须创建id。
简而言之
android:id="@+id/my_button"
+id加号告诉android在资源中添加或创建一个新的id。
而
android:layout_below="@id/my_button"
它只是帮助引用已经生成的id..