android 佈局文件中控件ID、name標籤屬性的命名包含「@」、「.」、「+」等等符號的含義

1. 在項目的根目錄有個配置文件「AndroidManifest.xml」,是用來設置Activity的屬性的如html

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="wq.org"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="4" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyAndroidActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity android:name=".ResultActivity"
                  android:label="@string/app_name">
        </activity>

    </application>
</manifest>

其中「android:name=".MyAndroidActivity"」裏面的「.」符號表示說當前包的意思, 也就是在<mainfest>標籤中設置的package屬性「wq.org」指定的包路徑,假如wq.org包下還有一個cc包,而且有一個Activity名爲CCActivity,那麼你配置android:name時就要寫成android:name=".cc.CCActivity",這個「.」最好仍是寫上好,不容易出錯。java

2.在頁面佈局文件中有一些相似的定義:android

<TextView 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:id="@+id/tvPass" 
	android:text="@string/tvPass"></TextView>

android:id="@+id/tvPass"裏面包含「@」以及「+」符號,「@」符號是將這個控件ID自動記載R文件中,「+」號表示向R文件中的內部類id中添加一個變量,名字叫tvPass,"+"至關於代碼中的new,"+id"就表示產生一個新的id,若是沒有"+",而是"@id"的話,就是引用其餘地方已經定義過的id了,這樣比較好理解app

3.介紹的比較好理解:佈局

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
相關文章
相關標籤/搜索