android系統(tǒng)中引用資源有幾種方式,常用的有“@”“@+”引用具體資源的方式。也有“?”"?attr"等引用主題屬性的方式,方式多了容易亂,為保持思路清晰,總結(jié)之。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到竹溪網(wǎng)站設(shè)計(jì)與竹溪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋竹溪地區(qū)。
引用格式分解:
android:background="@color/light_red" 引用colors.xml中定義的顏色資源
android:background="?attr/colorPrimary" 引用主題屬性colorPrimary
android | 命名空間 |
background | 屬性名稱(chēng) |
@ | 表明引用的是具體資源 |
? | 表明引用的是系統(tǒng)屬性 |
color | 資源類(lèi)型 |
attr | 屬性的類(lèi)型 |
light_red | colors.xml中定義的顏色資源名稱(chēng) |
colorPrimary | 屬性名稱(chēng) |
引用具體資源:
1、引用自定義資源
格式:@[package:]type/name
例如:android:text="@string/app_name"
=====================================================================
2、引用系統(tǒng)資源
格式:@android:type/name
例如:android:textColor="@android:color/light_blue"
@android:style/Theme.Holo.Light //引用系統(tǒng)主題
3、“@+”表示新建并引用資源id
例如:android:id="@+id/bt_title"
繼承關(guān)系指定:(這里可以不需要使用“@”)
同上
同上
=====================================================================
引用主題屬性:
5、“?”表示引用主題屬性
引用當(dāng)前主題中定義的屬性?!癅”表示引用具體的資源,而“?”表示當(dāng)前theme中定義的屬性,該屬性指定了具體的資源值,實(shí)現(xiàn)了根據(jù)使用的不同theme使用不同的資源的功能。
例如:background="?colorPrimary"。在使用theme_white和theme_black時(shí)background的值分別是white和black
引用屬性寫(xiě)法:
引用自定義屬性:?attr/colorPrimary 簡(jiǎn)寫(xiě):?colorPrimary
引用系統(tǒng)屬性:?android:attr/colorPrimary 簡(jiǎn)寫(xiě):?android:colorPrimary
其中,自定義屬性會(huì)復(fù)寫(xiě)系統(tǒng)屬性
引用屬性時(shí),不需要指定類(lèi)型(?name == ?attr/name)
當(dāng)colors.xml中有定義colorPrimary屬性時(shí),
鼠標(biāo)在該屬性上時(shí)“?colorPrimary”和“?attr/colorPrimary”均顯示:
?attr/colorPrimary => @color/colorPrimary =>#3F51B5
所以:“?colorPrimary”只是“?attr/colorPrimary”的簡(jiǎn)寫(xiě)
鼠標(biāo)在該屬性上時(shí)“?android:colorPrimary”和“?android:attr/colorPrimary”均顯示:
?android:attr/colorPrimary => ?attr/colorPrimary=> @color/colorPrimary => #3F51B5
所以:“?android:colorPrimary”只是“?android:attr/colorPrimary”的簡(jiǎn)寫(xiě)
當(dāng)colors.xml中沒(méi)定義colorPrimary屬性時(shí),
?attr/colorPrimary => @color/primary_material_light=> @color/material_grey_100 => #fff5f5f5
這是AppCompat包中定義的屬性值
引用資源時(shí),一定要指定類(lèi)型(@name != @color/name)
@name會(huì)引用失敗
因?yàn)椴煌?lèi)型的資源可以有相同的名稱(chēng),如:R.color.white、R.style.white。
而主題屬性不可以,并且在attrs.xml中就約束了其類(lèi)型,所以屬性引用可以省略,而資源引用不可以