Android資源引用詳解

布局文件中資源引用的寫法多種多樣移稳,且看以background舉例:

< 
……
android:background="@color/colorPrimary"  
android:background="@com.demo.app:color/colorPrimary"  
android:background="?colorPrimary"  
android:background="?attr/colorPrimary"  
android:background="?com.demo.app:attr/colorPrimary"  
android:background="?com.demo.app:colorPrimary"  
android:background="?android:colorPrimary"  
android:background="?android:attr/colorPrimary"
……
>

懵ing楞慈。。。塞椎。那么接下來就詳細說說春缕,這些都代表了什么

理解 @ 和 ?

首先我們需要理解@和?分別引用的是什么內(nèi)容

@ :引用資源(resources)
? :引用樣式屬性(style attribute)

詳細來講:

  • 使用@ 是引用一個具體的值比如color, string, dimension 等等這些具體的某個值贱田。不管activity是什么主題的孟岛,@引用的值都不會改變

    <?xml version="1.0" encoding="utf-8"?>  
    <resources>  
        <color name="colorPrimary">#3F51B5</color>
    </resources>
    
  • ? 是引用一個style attribute针炉,其值取決于當前使用的主題挠他。值為當前主題下定義的屬性值:

    <resources>  
        <style name="AppTheme" parent="Theme.AppCompat.Light">
            <item name="colorPrimary">#3F51B5</item>
        </style>
    </resources>
    
    ……
    
    <TextView  
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="?colorPrimary"/>
    

    這樣,TextView的背景色就是當前主題下定義的colorPrimary

語法

引用resources (@)

@[包名:]資源類型/資源名

  • 包名:可省略篡帕,即這個資源所屬的package殖侵,默認就是你app的包名,還有一個預留的包——android镰烧,使用系統(tǒng)發(fā)布的資源愉耙。
  • 資源類型:R的子集,即資源的類型(color, string, dimen等等)
  • 資源名:我們要引用的資源的名稱

例如:

<……
android:background="@color/colorPrimary"  
android:background="@com.myapp:color/colorPrimary"
……>

這兩種寫法是等效的:

  • package(可不寫) = com.myapp
  • 資源類型 = color
  • 資源名 = colorPrimary
    那么使用系統(tǒng)預定義的資源就是:
<……
android:background="@android:color/holo_orange_dark"
……>

這個例子拆解開來就是:

  • package = android – 引用內(nèi)置的資源
  • 資源類型 = color
  • 資源名 = holo_orange_dark

PS:
使用AppCompat定義的資源的資源時拌滋,常見以下的寫法:
android:background="?selectableItemBackground"
我們并沒有定義這些資源朴沿,也沒有使用預留包名,之所以能這樣使用是因為AppCompat那些資源被整合到了app中败砂,不需要使用android關鍵字來引用赌渣。

引用樣式屬性(?)

語法與@相似

?[包名:][資源類型/]資源名稱
區(qū)別在于,資源類型也是可不寫的,因為這里唯一允許的資源類型是attr昌犹。
下面的表述方式其實完全是一樣的:

<
android:background="?com.demo.app:attr/colorPrimary" //完整寫法  
android:background="?com.demo.app:colorPrimary" //省略attr
android:background="?attr/colorPrimary" //省略包名  
android:background="?colorPrimary"  // 省略包名和 attr
>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坚芜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斜姥,更是在濱河造成了極大的恐慌鸿竖,老刑警劉巖沧竟,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缚忧,居然都是意外死亡悟泵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門闪水,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糕非,“玉大人,你說我怎么就攤上這事球榆⌒喾剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵持钉,是天一觀的道長衡招。 經(jīng)常有香客問我,道長每强,這世上最難降的妖魔是什么蚁吝? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮舀射,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怀伦。我一直安慰自己脆烟,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布房待。 她就那樣靜靜地躺著邢羔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桑孩。 梳的紋絲不亂的頭發(fā)上拜鹤,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音流椒,去河邊找鬼敏簿。 笑死,一個胖子當著我的面吹牛宣虾,可吹牛的內(nèi)容都是我干的惯裕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绣硝,長吁一口氣:“原來是場噩夢啊……” “哼蜻势!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鹉胖,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤握玛,失蹤者是張志新(化名)和其女友劉穎够傍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挠铲,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡冕屯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了市殷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愕撰。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖醋寝,靈堂內(nèi)的尸體忽然破棺而出搞挣,到底是詐尸還是另有隱情,我是刑警寧澤音羞,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布囱桨,位于F島的核電站,受9級特大地震影響嗅绰,放射性物質(zhì)發(fā)生泄漏舍肠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一窘面、第九天 我趴在偏房一處隱蔽的房頂上張望翠语。 院中可真熱鬧,春花似錦财边、人聲如沸肌括。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谍夭。三九已至,卻和暖如春憨募,著一層夾襖步出監(jiān)牢的瞬間紧索,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工菜谣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珠漂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓尾膊,卻偏偏與公主長得像甘磨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子眯停,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評論 25 707
  • Android提供了一種非常靈活的資源系統(tǒng)济舆,可以根據(jù)不同的條件提供可替代資源。因此莺债,系統(tǒng)基于很少的改造就能支持新特...
    Gooooood閱讀 12,770評論 5 25
  • 轉(zhuǎn)眼間已到中年滋觉,再不珍惜此生已終結(jié)签夭。所以在佛前許下大愿:余生只做有意義的事!
    水晶慧紅閱讀 295評論 0 0
  • 我們學校實驗樓南面的草地上有只鹿 蒼白的 石頭雕成的鹿 昂首 很驕傲的樣子 它的眼睛很大 但看起來不是很開心 大約...
    吳也白閱讀 307評論 14 10
  • 曹愛民說椎侠,你們上海人真矯情第租,吃完咸的要吃甜的;早飯不吃我纪,吃什么brunch慎宾;午飯吃完還要搞個下午茶;哪像我們隨便一...
    大杰克閱讀 1,517評論 1 1