我刚刚开始使用android,并完成了大约5个布局文件.但是,我才意识到我一直在使用@id和@ + id,但我不确定两者之间的确切区别.
Sim*_*iak 44
您需要在@+id为视图定义自己的Id时使用.
完全来自docs:
字符串开头的at符号(@)表示XML解析器应解析并扩展ID字符串的其余部分,并将其标识为ID资源.加号(+)表示这是一个新的资源名称,必须创建并添加到我们的资源中(在R.java文件中).Android框架提供了许多其他ID资源.引用Android资源ID时,您不需要加号,但必须添加android包命名空间.
现在我为你添加实际例子:
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/start"
/>
Run Code Online (Sandbox Code Playgroud)
所以在这里,你创建了两个IDs,开始和检查.然后,在您的应用程序中,您可以使用它连接到它们findViewById(R.id.start).
这android:layout_below="@id/start"指的是现有的id.start,意味着你Button的id 检查将位于Buttonid start的下方.
所有其他答案都忘记提及这件小事。
当使用@id/来引用一个已经生成的android 资源时,请确保你引用的资源是早先而不是晚定义的。
那不是这个:
<Button
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/start"
/>
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)
用这个:
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/start"
/>
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,您指的是在访问它后生成的资源@id/start。虽然这适用于原生 android,但如果您打算在 react-native 或 ionic 或任何其他混合平台中使用此代码,则会生成资源未找到错误。
所以在使用它作为@id/之前要小心生成资源id
| 归档时间: |
|
| 查看次数: |
9985 次 |
| 最近记录: |