我刚开始使用android,并有大约5个布局文件完成。但是,我只是意识到我一直在使用@id和@ + id,但我不确定两者之间的确切区别。@id和@ + id有什么区别?
回答
当您为视图定义自己的ID时,您需要使用@+id
。
没错:
将在符号的字符串的开头(@)表示 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"
/>
所以在这里,您创建了两个IDs
,启动和检查。然后,在您的应用程序中,您可以使用findViewById(R.id.start)
连接到它们。
这android:layout_below="@id/start"
指现有id.start
并意味着你Button
与ID 检查将被定位低于Button
与ID 开始。
机器人:ID = “@ + ID/my_button”
+ ID加唱告诉机器人添加或创建资源的新ID。
机器人:layout_below = “@ ID/my_button”
它只是帮助指已经生成的ID ..
有时你必须使用+号。例如。当您使用<include ... />
和所包含的文件看起来像这样:
Error:(9, 24) No resource found that matches the given name (at 'layout_anchor' with value '@id/view_pager').
它的发生给我我的项目:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.FloatingActionButton xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
(...)
app:layout_anchor="@+id/view_pager"
app:layout_anchorGravity="top|right|end"
/>
如果你不"@+id/view_pager"
添加+
同时建设的项目,你会得到错误与图书馆。
为了访问Java中的小部件(或组件)或使其他人依赖它,我们需要一个唯一的值来表示它。该唯一值由android:id属性提供,它实质上将作为后缀提供的id作为@ + id /添加到id资源文件供其他人查询。对于工具栏的ID可以这样定义,
android:id=”@+id/toolbar
随后的ID现在可以通过findViewById(...)看起来它在res文件的ID,或者干脆R.id目录,并返回类型进行跟踪有问题的视图。 另一个@id的行为与findViewById(...)相同 - 通过提供的id查找组件,但仅保留用于布局。它最常用的用法是将一个组件放入它返回的组件中。
android:layout_below=”@id/toolbar”
- 1. @ + id/android:list和@ + id/list有什么区别
- 2. 选择器#id和[id $ ='id']之间有什么区别?
- 3. dojoAttachpoint和id有什么区别。
- 4. $(this)和$(“#id”)有什么区别?
- 5. mongoose中id和_id有什么区别?
- 6. 区别:ID/*和@ + ID/*
- 7. $(“#id div”)和$(“#id> div”)有什么区别?
- 8. Android中的@ id /和@ + id /有什么区别?
- 9. Android ID和设备ID有什么区别?
- 10. 在JSF中,from-view-id和from-tree-id有什么区别?
- 11. android:id =“@ + id/btnSet”和android:id =“@ id/btnSet”有什么区别?
- 12. 接口ID,实现ID和DLL ID(UID3)有什么区别和关系?
- 13. 这些ID /类有什么区别?
- 14. $ this-> id和$ id的区别是什么
- 15. jquery $(#id)和$([id =])之间的区别是什么
- 16. 通过e.id = X和e.attr(“id”,X)分配新ID有什么区别吗?
- 17. 机会的父母联系人ID和联系人ID有什么区别?
- 18. Sencha Touch中id和itemID之间有什么区别?
- 19. 元素和元素ID有什么区别?
- 20. * nix中的job pid和进程ID有什么区别?
- 21. 使用输入#编号和只是#id有什么区别?
- 22. ServiceStack会话中ss-id和ss-pid有什么区别?
- 23. Omniture Test&Target中的课程和ID有什么区别?
- 24. GetWindowThreadProcessID和使用TIB获取线程ID有什么区别?
- 25. jQuery('[id $ =“myID”]')和$(“#<%= myID.ClientID%>”)有什么区别?
- 26. jQuery中的class和id有什么区别?
- 27. 数组元素的id和index有什么区别?
- 28. 共享内存:密钥和ID有什么区别?
- 29. openid,oauth1.0,oauth1.0a,oauth2.0和open id connect有什么区别?
- 30. Android设备ID和设备令牌有什么区别?
好的,谢谢,这是否意味着我可以在任何时候使用@ + id而没有问题? – JuiCe
是的,当你想创建新的唯一ID时,只需使用@ + id就像文档所表示的那样。 – Sajmon
@Sajmon当我使用android:layout_below =“@ + id/start”而不是android:layout_below =“@ id/start”时,它会创建问题。或者它可以在很长一段时间后产生问题? – Bora