会挽雕弓如满月,西北望,射天狼。这篇文章主要讲述Android中@+id和@id的差别相关的知识,希望能为你提供帮助。
android中的组件须要用一个int类型的值来表示。这个值也就是组件标签中的id属性值。
id属性仅仅能接受资源类型的值,也就是必须以@开头的值,比如,@id/abc、@+id/xyz等。
假设在@后面使用“+”,表示当改动完某个布局文件并保存后,系统会自己主动在R.java文件里生成对应的int类型变量。变量名就是“/”后面的值。比如,@+id/xyz会在R.java文件里生成int xyz = value。当中value是一个十六进制的数。假设xyz在R.java中已经存在同名的变量,就不再生成新的变量。而该组件会使用这个已存在的变量的值。
也就是说,假设使用@+id/name形式,当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。假设不存在该变量。则加入一个新的变量。并为该变量赋对应的值(不会反复)。
既然组件的id属性是一个资源id就能够,那么自然能够设置不论什么已经存在的资源id值,比如,@drawable/icon、@string/ok、@+string/you等。当然,也能够设置android系统中已存在的资源id,比如。楼主提出的@id/android:list。那么这个android是什么意思呢,实际上。这个android就是系统的R类(在R.java文件里)所在的package。我们能够在Java代码编辑区输入android.R.id.,就会列出对应的资源id。比如,也能够设置id属性值为@id/android:message。
<
ListView android:id="@+id/android:message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
还有第二种方法查看系统中定义的id,进入<
android sdk安装目
录>
\platforms\android-1.5\data\res\values文件夹。找到ids.xml文件。打开后,内容例如以下:
<
?xml version="1.0" encoding="utf-8"?>
<
resources>
<
item type="id" name="price_edit">
false<
/item>
<
item type="id" name="amount_edit">
false<
/item>
<
/resources>
若在ids.xml中定义了ID。则在layout中可例如以下定义@id/price_edit,否则@+id/price_edit
【Android中@+id和@id的差别】
总结一下:
一、android:id="@android:id/tabhost"
是调用系统内部的ID和代码中
mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent);
是一回事。
二、android:id="@+id/llRoot" 就是自定义一个新的ID。
三、android:id="@id/llRoot"使用一个已经存在的ID号引用(跟第一个不同,这里引用的不是系统的)
推荐阅读
- NFC技术(使用Android Beam技术传输文本)
- 看电影便宜的app
- Android 之 Eclipse没法生成R文件
- Android中 Application的使用
- 老魏AppDev随笔开张
- Android Jni层 创建 linux socket 出错问题解决
- Android高仿UC浏览器和360手机卫士消息常驻栏(通知栏)
- Pro Android学习笔记 ActionBar(Home图标区)
- 电子书 移动App测试实战(互联网企业软件测试和质量提升实践.pdf)