android 布局文件中控件ID、name標簽屬性的命名包含“@”、“.”、“+”等等符號的含義


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

[html]  view plain copy print ?
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="wq.org"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <uses-sdk android:minSdkVersion="4" />  
  7.   
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  9.         <activity android:name=".MyAndroidActivity"  
  10.                   android:label="@string/app_name">  
  11.             <intent-filter>  
  12.                 <action android:name="android.intent.action.MAIN" />  
  13.                 <category android:name="android.intent.category.LAUNCHER" />  
  14.             </intent-filter>  
  15.         </activity>  
  16.           
  17.         <activity android:name=".ResultActivity"  
  18.                   android:label="@string/app_name">  
  19.         </activity>  
  20.   
  21.     </application>  
  22. </manifest>  

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

2.在頁面布局文件中有一些類似的定義:

[html]  view plain copy print ?
 
  1. <TextView   
  2.     android:layout_width="fill_parent"   
  3.     android:layout_height="wrap_content"   
  4.     android:id="@+id/tvPass"   
  5.     android:text="@string/tvPass"></TextView>  

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

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


免責聲明!

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



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