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="@android:id/tabhost" 是调用系统内部的ID和代码中
mTabContent = (FrameLayout) findViewById(com.android.internal.R.id.tabcontent);是一回事。
二、android:id="@+id/llRoot" 就是自定义一个新的ID。
三、android:id="@id/llRoot"使用一个已经存在的ID号引用(跟第一个不同,这里引用的不是系统的)
Android中@+id和@id的差别的更多相关文章
- android中Invalidate和postInvalidate的差别
Android中实现view的更新有两组方法,一组是invalidate.还有一组是postInvalidate.当中前者是在UI线 程自身中使用,而后者在非UI线程中使用. Android提供了In ...
- 我的Android进阶之旅------>android中getLocationInWindow 和 getLocationOnScreen的差别
View.getLocationInWindow(int[] location) 一个控件在其父窗体中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...
- Android中的asserts和res/raw资源目录
1.assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的: (1)使用方法 AssetManager assets = this. ...
- Android中@id与@+id区别
Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...
- Android中Bitmap, Drawable, Byte,ID之间的转化
Android中Bitmap, Drawable, Byte,ID之间的转化 1. Bitmap 转化为 byte ByteArrayOutputStream out = new ByteArray ...
- Android库项目中的资源ID冲突
1.前言 Android Studio对模块化开发提供的一个很有用的功能就是可以在主项目下新建库项目(Module),但是在使用库项目时却有一个问题就是资源ID冲突,因为编译时SDK会自动帮我们处理这 ...
- Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?
Android布局文件中的"@+id"和"@id"有什么区别? +id表示为控件指定一个id(新增一个id),如: <cn.codingblock.vie ...
- Android中@id与@+id区别和sharedUserId属性详解
Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...
- ExtJs4学习(四):Extjs 中id与itemId的差别
为了方便表示或是指定一个组件的名称,我们一般会使用id或者itemId进行标识命名. (推荐尽量使用itemId.这样能够降低页面唯一标识而产生的冲突) id: id是作为整个页面的Comp ...
随机推荐
- [Swift通天遁地]九、拔剑吧-(17)创建一个三维折叠样式的页面展开效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- hdu2030
http://acm.hdu.edu.cn/showproblem.php?pid=2030 #include<stdio.h> #include<math.h> #inclu ...
- Android中有四大组件的简单总结
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...
- 入门开发工具idea常见问题之选项中没有servlet
1.在maven中如果创建不了servlet,在project Setting旁边的添加一个web选项,就可以创建servlet了. 初次接触这个陌生的工具还是不太好弄.
- jQuery Tmpl使用
1.引入脚本 2.编写模板 2.1假设此时有一个,从后台一json格式发送来的数据 [{"tId":1,"tName":"张三"," ...
- 新认知之WinForm窗体程序
Windows应用程序和控制台应用程序有很大的区别 >Form1.cs :窗体文件,程序员对窗体编写的代码一般都存放在这个文件中. >Form1.Designer.cs :窗体设计文件, ...
- 关于类似vue-cli 脚手架
#!/usr/bin/env node const download = require('download-git-repo') const program = require('commander ...
- 如何快速获取yun2win app key?
注册yun2win开发者账号 1.在注册页面输入您的邮箱,点击下方发送,yun2win将会发送一封验证邮件到您的邮箱: 2.如果没有收到邮件请查看垃圾箱或者点击重新发送: 3.打开邮箱查看验证邮件,点 ...
- GridView动态计算高度
// 动态加载GridView 高度 public static void setListViewHeightBasedOnChildren(MyGridView myGridView) { List ...
- MyBatis入门3_mapper.xml优化(parameterType简写_NameSpace简写_sql片段_特殊字符处理)_动态SQL
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 优化 1.起别名(一般不用,写全方便查看类出处) 以前 ...