为什么"加号"会在Android中引用名称中为ID资源签名

Tar*_*rik 4 android android-layout

我无法想出这个问题的更好的标题,所以如果可以,请随时修改它.

所以这是我的问题.我决定为自己编写一个小应用程序,同时我也在努力学习Android开发.我知道为什么属性中有一个+(加号)符号,android:id因为它意味着"创建一个新的id资源".但我不知道为什么Android需要放入+用于引用的内容,如下所示:

在这里,我有两个按钮,命名StartButtonStopButton和,因为它们是新的资源,将android:id包含+:

  <Button
    android:id="@+id/StartButton"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="53dp"
    android:textSize="18dp"
    android:text="Start"
    android:onClick="StartButton_OnClick" />

<Button
    android:id="@+id/StopButton"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/StartButton"
    android:layout_toRightOf="@+id/StartButton"
    android:text="Stop"
    android:textSize="18dp"
    tools:context=".CallerBlockerActivity"
    android:onClick="StopButton_OnClick" />
Run Code Online (Sandbox Code Playgroud)

但是为什么android:layout_alignTop包含+谜题,因为它id/StartButton是在@id/StopButton达到它时定义的.有人可以解释一下这种语法的必要性吗?

kco*_*ock 5

无论哪种方式都无关紧要 - 首次引用ID时只需要+.如果已定义ID,则无论如何都会忽略+.如果您愿意,可以在XML中的每个引用之前放置一个+,并且一切都将按预期工作.不过,这只是第一次参考的必要条件.

  • 那么我认为`+`仅用于`android:layout_alignTop ....`中的注意事项.好像`StopButton`定义写在`StartButton`之上.并且缺少`+`符号然后会出错. (2认同)