Android 设计师为什么使用“设计”呢@+;id";而不是",@id";约束条件?
我一直认为Android 设计师为什么使用“设计”呢@+;id";而不是",@id";约束条件?,android,android-studio,android-layout,designer,Android,Android Studio,Android Layout,Designer,我一直认为@+id表示新id的创建(通常与android:id一起使用),而@id表示在其他地方引用它,详细解释如下: 字符串开头的at符号(@)表示XML解析器应该解析和展开ID字符串的其余部分,并将其标识为ID资源加号(+)表示必须创建一个新的资源名称,并将其添加到我们的资源中(在R.java文件中)。Android框架还提供了许多其他ID资源引用Android资源ID时,不需要加号,,但必须添加Android软件包名称空间 没有强制执行这一点有点奇怪;您可以在任何地方使用@+id,多次使用
@+id
表示新id的创建(通常与android:id
一起使用),而@id
表示在其他地方引用它,详细解释如下:
字符串开头的at符号(@)表示XML解析器应该解析和展开ID字符串的其余部分,并将其标识为ID资源加号(+)表示必须创建一个新的资源名称,并将其添加到我们的资源中(在R.java文件中)。Android框架还提供了许多其他ID资源引用Android资源ID时,不需要加号,,但必须添加Android软件包名称空间
没有强制执行这一点有点奇怪;您可以在任何地方使用@+id
,多次使用相同的id,这似乎不是一个错误或问题(除非您在多个android:id
声明中使用相同的id)
在Android Studio中使用带有约束布局的图形设计器时(事实上,它可能包含所有内容,我没有检查),每当添加约束时,它都会这样声明:
app:layout_constraintTop_toBottomOf="@+id/rlistfrag"
其中,rlistfrag
被分配给同一文件中另一个具有android:id
的元素——如果该元素不存在,则设计人员不可能创建约束,因此不存在上下文歧义。1根据文档,这相当于两次声明“必须创建并添加到我们的资源中的新资源名称”
这里的语义似乎不完全像文档中描述的那样,至少是省略了。设计师为什么要这样做,那些省略的语义是什么