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。

 

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()