[Android] 關於Android的問號?和@符號的用法


@表示引用資源,聲明這是一個資源引用—隨后的文本是以@[package:]type/name形式提供的資源名。
@android:string表明引用的系統的(android.*)資源
@string表示引用應用內部資源
對於id, 可以用@+id表明創建一個id
?表示引用屬性
“?”引用主題屬性,當您使用這個標記,你所提供的資源名必須能夠在主題屬性中找到,因為資源工具認為這個資源屬性是被期望得到的,您不需要明確的指出它的類型(?android:attr/android:textDisabledColor)。

使用主題屬性 :
另外一種資源值允許你引用當前主題中的屬性的值。這個屬性值只能在樣式資源和XML屬性中使用;它允許你通過將它們改變為當前主題提供的標准變化來改變UI元素的外觀,而不是提供具體的值。
如例中所示,我們在布局資源中使用這個特性將文本顏色設定為標准顏色的一種,這些標准的顏色都是定義在基本系統主題中:

Java代碼 
<?xml version="1.0" encoding="utf-8"?> 
<EditText id="text" 
    xmlns:android="http://schemas.android.com/apk/res/android
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:textColor="?android:textDisabledColor" 
    android:text="@string/hello_world" /> 


注意,這和資源引用非常類似,除了我們使用一個“?”前綴代替了“@”。當你使用這個標記時,你就提供了屬性資源的名稱,它將會在主題中被查找 ——因為資源工具知道需要的屬性資源,所以你不需要顯式聲明這個類型(如果聲明,其形式就是?android:attr/android:textDisabledColor)。
除了使用這個資源的標識符來查詢主題中的值代替原始的資源,在這里關於該類型的name語法:?[namespace:]typpe/name和“@”形式一樣,也是可選。


免責聲明!

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



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