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號引用(跟第一個不同,這里引用的不是系統的



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM