開發(fā)項(xiàng)目的過程中,我們會發(fā)現(xiàn),有很多頁面都需要一種同樣的布局,來做同樣的功能。例如下圖的效果,我在開發(fā)項(xiàng)目中,大部分頁面,都需要這個布局,并且都做一件事:返回前一頁。

不會偷懶的程序員,不是好程序員。
第一種程序員:每次有新頁面需要這個布局,就復(fù)制粘貼,簡直是最勤快的笨程序員了。
第二種程序員:稍微聰明一點(diǎn),會使用<include>標(biāo)簽來引入這個布局。但是這個方法依舊不夠完美。因?yàn)檫€是要每次代碼寫onClick,如果頁面真的很多的話,我選擇狗帶。
第三種程序員:會使用自定義組合控件來幫助自己。每次只需要在xml里引入自己的控件, so easy!媽媽再也不用擔(dān)心我的代碼了!
當(dāng)然,我才不會說,這是我的進(jìn)化史!T_T。。。
自定義組合控件,說簡單也不簡單,說難也不難。(ps:我在說廢話。)
好了,開始寫一個通用標(biāo)題欄吧!
1.看圖說話,很明顯,這個組合控件,需要一個ImageView和一個TextView。有很多高手,喜歡直接用代碼寫出來。但是我頭腦簡單,選擇使用xml。我建議新手使用xml。

2.寫好了布局,看一下有哪些地方需要動態(tài)設(shè)置的,很明顯,titleText這個TextView的值是需要我們單獨(dú)設(shè)置的,畢竟不可能每個頁面標(biāo)題一樣。于是,我們需要去attr文件里設(shè)置自定義屬性。

3.ok!萬事俱備,只欠起飛。新建一個class文件,類名和<declare-styleable>的name名稱一樣并繼承LinearLayout。讓我描述代碼,這件事真麻煩,藍(lán)瘦香菇。還是看代碼吧T_T

若是你看不懂,我只能說,沒關(guān)系,孩子。你的未來還很長,不著急。
若是看懂了,恭喜你,你又成長了!
xml里只需引入:

好了,其他不用管了。點(diǎn)擊事件控件里已經(jīng)寫好,好好去聚焦其他的內(nèi)容吧。