电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談android @id和@+id的區(qū)別

瀏覽:89日期:2022-09-22 16:35:17

今天,簡單講講android里關于@id和@+id的區(qū)別。

之前,自己在布局里無論什么情況都使用@+id,可是后來發(fā)現(xiàn)有些代碼用的是@id,自己不知道這兩者之間有什么區(qū)別。于是就在網(wǎng)上查找資料,最終是解決了問題。這里記錄一下。

Android中的組件需要用一個int類型的值來表示,這個值也就是組件標簽中的id屬性值。id屬性只能接受資源類型的值,也就是必須以@開頭的值,例如,@id/abc、@+id/xyz等。

如果在@后面使用“+”,表示當修改完某個布局文件并保存后,系統(tǒng)會自動在R.java文件中生成相應的int類型變量。變量名就是“/”后面的值,例如,@+id/xyz會在R.java文件中生成int xyz = value,其中value是一個十六進制的數(shù)。如果xyz在R.java中已經(jīng)存在同名的變量,就不再生成新的變量,而該組件會使用這個已存在的變量的值。

也就是說,如果使用@+id/name形式,當R.java中存在名為name變量時,則該組件會使用該變量的值作為標識。如果不存在該變量,則添加一個新的變量,并為該變量賦相應的值(不會重復)。

既然組件的id屬性是一個資源id就可以,那么自然可以設置任何已經(jīng)存在的資源id值,例如,@drawable/icon、@string/ok、@+string/you等。當然,也可以設置android系統(tǒng)中已存在的資源id,例如,樓主提出的@id/android:list,那么這個android是什么意思呢,實際上,這個android就是系統(tǒng)的R類(在R.java文件中)所在的package。我們可以在Java代碼編輯區(qū)輸入android.R.id.,就會列出相應的資源id,例如,也可以設置id屬性值為@id/android:message。

<ListView android: android:layout_width='wrap_content' android:layout_height='wrap_content'/>

還有另外一種方法查看系統(tǒng)中定義的id,進入<android sdk安裝目錄>platformsandroid-1.5dataresvalues目錄,找到ids.xml文件,打開后,內(nèi)容如下:

<?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

這里簡單講講,其實@+id就是在R.java文件里新增一個id名稱,如果之前已經(jīng)存在相同的id名稱,那么會覆蓋之前的名稱。而@id則是直接引用R.java文件的存在的id資源,如果不存在,會編譯報錯。

用一個例子來講:

<View android:layout_below='@+id/view1' android:layout_width='match_parent' android:layout_height='wrap_content'/><View android: android:layout_width='match_parent' android:layout_height='wrap_content'/>

上述代碼是正確的,即下面的順序是被允許的。但是去掉第一行的+號,或者將第二行與第一行的位置換一下,便不行!!!

android:layout_below='@+id/view1'android:id='@id/view1'

原理就是:

@+id會在R.java file里面添加一個新的id,這也就是能用findViewById(R.id.xxx)找到控件的原因,而@id就直接在這個文件里查找了。

而為什么已經(jīng)存在了某個id,在layout_below里仍可以@+id呢? 因為android能容忍重復的id存在,并不是說會出現(xiàn)兩個相同的id,而是新的id覆蓋原有的id,而在這兒@+id不過是將id重復創(chuàng)建了一遍。

不建議在已存在某id的時候再在布局中使用@+id,雖然暫時這是被允許的,但是這種寫法并不規(guī)范,在后續(xù)的android版本中可能被禁止這種寫法。

簡單講講,其實在相對布局里,除了申明控件的id使用@+id/外,其余的引用控件最好使用@id,這樣符合代碼規(guī)范,也可以節(jié)約編譯的時間,避免R.java文件無用的寫入。

到此這篇關于淺談android @id和@+id的區(qū)別的文章就介紹到這了,更多相關android @id和@+id內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關文章:
主站蜘蛛池模板: 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 河南彩印编织袋,郑州饲料编织袋定制,肥料编织袋加工厂-盛军塑业 河南凯邦机械制造有限公司 | 旋转滴界面张力仪(张力测定仪器)-百科| 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 重庆轻质隔墙板-重庆安吉升科技有限公司 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 导电银胶_LED封装导电银胶_半导体封装导电胶厂家-上海腾烁 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 密度电子天平-内校-外校电子天平-沈阳龙腾电子有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 |