Android中自定義控件的declare-styleable屬性重用方案
最近接觸了Android自定義控件,涉及到自定義xml中得屬性(attribute),其實(shí)也很簡(jiǎn)單,但是寫著寫著,發(fā)現(xiàn)代碼不完美了,就是在attrs.xml這個(gè)文件中,發(fā)現(xiàn)屬性冗余,于是就想有沒有類似屬性繼承或者include之類的方法.本文將就declare-stylable中屬性重用記錄一下.
不完美的代碼
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ExTextView">
<attr name="enableOnPad" format="boolean" />
<attr name="supportDeviceType" format="reference"/>
</declare-styleable>
<declare-styleable name="ExEditText">
<attr name="enableOnPad" format="boolean" />
<attr name="supportDeviceType" format="reference"/>
</declare-styleable>
</resources>
如上面代碼,在ExTextView和ExEditText這個(gè)stylable中有著重復(fù)的屬性申明.雖然上面可以工作,但是總感覺寫的不專業(yè),于是尋找優(yōu)化方法.
這樣可以么
嘗試著為declare-stylable指定一個(gè)parent,如下代碼
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ExTextView">
<attr name="enableOnPad" format="boolean" />
<attr name="supportDeviceType" format="reference"/>
</declare-styleable>
<declare-styleable name="ExEditText" parent="ExTextView">
</declare-styleable>
</resources>
attrs.xml沒有報(bào)告語(yǔ)法錯(cuò)誤.但是當(dāng)我使用R.styleable.ExEditText_supportDeviceType時(shí)候,R文件卻沒有生成,重新清理了工程還是不生效,不知道是否為adt插件的問(wèn)題.其他人也遇到了這樣的問(wèn)題. 這個(gè)方法目前是不行的.
終極答案
實(shí)際上我們可以在declare-stylable之前,申明要多次使用的屬性,在declare-stylable節(jié)點(diǎn)內(nèi)部,只需調(diào)用即可.具體代碼如下.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="enableOnPad" format="boolean" />
<attr name="supportDeviceType" format="reference"/>
<declare-styleable name="ExTextView">
<attr name="enableOnPad"/>
<attr name="supportDeviceType"/>
</declare-styleable>
<declare-styleable name="ExEditText">
<attr name="enableOnPad"/>
<attr name="supportDeviceType"/>
</declare-styleable>
</resources>
每次引用attr后,建議清理一下工程,確保R文件重新生成.
延伸閱讀
- android 自定義控件 自定義屬性詳細(xì)介紹
- android自定義倒計(jì)時(shí)控件示例
- Android自定義表格控件滿足人們對(duì)視覺的需求
- android圖像繪制(四)自定義一個(gè)SurfaceView控件
- android自定義按鈕示例(重寫imagebutton控件實(shí)現(xiàn)圖片按鈕)
- android開發(fā)教程之自定義控件checkbox的樣式示例
- Android開發(fā)技巧之在a標(biāo)簽或TextView控件中單擊鏈接彈出Activity(自定義動(dòng)作)
- Android自定義播放器控件VideoView
- android自定義控件和自定義回調(diào)函數(shù)步驟示例
- 輕松實(shí)現(xiàn)可擴(kuò)展自定義的Android滾輪時(shí)間選擇控件
- Android自定義控件屬性詳細(xì)介紹
相關(guān)文章
Android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果
這篇文章主要介紹了android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果的實(shí)例,通過(guò)定義五個(gè)狀態(tài),分別為:為完成、正在進(jìn)行、已完成、終點(diǎn)完成、終點(diǎn)未完成。具體實(shí)現(xiàn)代碼,大家參考下2017-03-03http請(qǐng)求繞過(guò)Filter的實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了http請(qǐng)求繞過(guò)Filter的實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06Android中通過(guò)訪問(wèn)本地相冊(cè)或者相機(jī)設(shè)置用戶頭像實(shí)例
本篇文章主要介紹了Android中通過(guò)訪問(wèn)本地相冊(cè)或者相機(jī)設(shè)置用戶頭像,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01Android 如何獲取手機(jī)總內(nèi)存和可用內(nèi)存等信息
這篇文章主要介紹了Android系統(tǒng)檢測(cè)程序內(nèi)存占用各種方法,并對(duì)內(nèi)存信息的詳細(xì)介紹,需要的朋友可以參考下2016-07-07Android View源碼解讀 DecorView與ViewRootImpl淺談
這篇文章主要解讀了Android View源碼,為大家詳細(xì)介紹DecorView與ViewRootImpl,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android組件Glide實(shí)現(xiàn)圖片平滑滾動(dòng)效果
這篇文章主要介紹了Android組件Glide實(shí)現(xiàn)圖片平滑滾動(dòng)效果的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下2016-07-07微信公眾平臺(tái)開發(fā)入門教程(SAE方倍工作室)
在這篇微信公眾平臺(tái)開發(fā)教程中,我們假定你已經(jīng)有了PHP語(yǔ)言程序、MySQL數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)通訊、及HTTP/XML/CSS/JS等基礎(chǔ)2014-05-05Android實(shí)現(xiàn)點(diǎn)擊WebView界面中圖片滑動(dòng)瀏覽與保存圖片功能
大家在日常使用spp流量文章的時(shí)候經(jīng)常會(huì)遇到這樣的一個(gè)功能,點(diǎn)擊文章的圖片進(jìn)入圖片的瀏覽模式,可以左右滑動(dòng)圖片瀏覽,并且可以實(shí)現(xiàn)保存圖片的功能,所以本文主要就介紹了在Android如何實(shí)現(xiàn)點(diǎn)擊WebView界面中圖片滑動(dòng)瀏覽與保存圖片功能,需要的朋友可以參考下。2017-04-04