以下是我从this网站挑选的代码。这种模式用于许多类似的代码中。
<Button
android:id="@+id/btnButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"/>
<Button
android:id="@+id/btnButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
android:layout_toRightOf="@+id/btnButton1"/> <!-- Why use @+id again and not just @id/btnButton1 -->
AFAIK +符号是将ID添加到资源ID列表的快捷方式。 @ + id / foo表示您在应用程序的命名空间中创建名为foo的id。你可以使用@ id / foo来引用它。
那么为什么不使用android:layout_toRightOf="@id/btnButton1
代替android:layout_toRightOf="@+id/btnButton1
,因为资源已经用id定义了?
答案 0 :(得分:3)
在引用已声明的标识符时,使用@+id
标识符声明语法肯定是一种常见的模式。
优点:
缺点:
答案 1 :(得分:1)
一旦你需要一个锚点来使用layout_toRightOf
,这就是为什么你需要提供一个id。其次,您可以省略+
。 +
保留以添加到R.id
类,但由于它仅包含静态最终字段,因此其值分配一次。
答案 2 :(得分:1)
在引用其他视图时,您应该使用android:layout_toRightOf="@id/btnButton1"/>
,而不需要使用+号
答案 3 :(得分:1)
你需要使用这样的代码来定义视图,你只需要提供带有'+'符号的id:
android:id="@+id/btnButton1"
定义后,它将出现在R.id类中。然后你可以在调用它时使用一个简单的@id:
android:id="@id/btnButton1"
因此,当您引用此视图时,您不再需要“+”:
<Button
android:id="@+id/btnButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
android:layout_toRightOf="@id/btnButton1"/>
答案 4 :(得分:0)
最佳做法是在第一次出现您的ID时添加@+id/
,并在以后想要引用它时使用@id/
但是
如果您之后更改了XML文件组件的排列并且忘记在第一次出现时为您的ID添加+
符号,那么应用程序将崩溃,因为您正在尝试引用到尚未在R.java
文件中声明的ID。
这就是为什么 推荐 始终使用@+id/
来避免这样的问题。
我希望这可以帮助您了解它的工作原理