-
任何 View
对象均可拥有与之关联的整型 ID
,用于在结构树中对 View
对象进行唯一标识。编译应用后,系统会以整型形式引用此 ID
,但在布局 XML
文件中,系统通常会以字符串的形式在 id
属性中指定该 ID
。这是所有 View
对象共有的 XML
属性(由 View
类定义),并且会经常使用该属性。
-
ID
字符串名称,在同一布局中必须是唯一的,不能重名,不同布局中可以同名。
-
XML
标记内部的 ID
语法:
android:id="@+id/dzm_test"
-
命名格式:/
后面的 ID
必须为字母开头。
android:id="@+id/123" ×
android:id="@+id/123adc" ×
android:id="@+id/-adc" ×
android:id="@+id/abc123" √
-
@
:字符串开头处的 @
符号表示 XML
解析器,解析并展开 ID
字符串的其余部分,并将其标识为 ID
资源
-
加号(+)
:表示这是一个新的资源名称,必须创建该名称并将其添加到资源 (R.java
文件中) 内,Android
框架还提供许多其他 ID
资源,引用Android
资源 ID
时,不需要加号,但必须添加 android
软件包命名空间:
android:id="@android:id/empty"
添加 android
软件包命名空间后,将从 android.R
资源类而非本地资源类引用 ID
。
-
通过带 +
符号的 ID
在编译后会添加到 R.java (R.txt)
文件中,附带:Android Studio 中 R.java 没了,转为 R.txt 文件!
-
@+id
与 @id
的区别:
@+id
:其实就是在 R.java (R.txt)
文件中新增一个 ID
名称,如果存在相同的名称会覆盖之前的名称。
@id
:是直接引用 R.java (R.txt)
文件中存在的 ID
资源,如果不存在,则会编译报错。
-
使用案例
<TextView
android:id="@+id/dzm"
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:text="Hello World!"
android:textSize="24sp"/>
// 通过代码获取到组件元素
TextView textview = (TextView)findViewById(R.id.dzm);