仿大衆點評下拉菜單實現

  今天給大家帶了一個好用的控件,大衆點評的下拉菜單,當然是仿照顯示效果實現的。實現下拉菜單我第一個想到的就是popupwindow。是的,我這裏確實使用popupwindow實現的。 
因爲不同的菜單裏面的頭部tabbar的個數不一樣而且樣式也可能不一樣,有些裏面是listview,有些裏面是按鈕和一些其他的控件,所以我的思路就漸漸清晰了。 
首先,我想構造一個基於LinearLayout的控件,裏面動態生成下拉菜單的tab的個數,並控制作爲下拉菜單的popupwindow顯示隱藏動畫效果,即ExpandTabView.java(在源碼中)這個類。 
然後根據每個菜單子項顯示的內容不同,構造不同的組件,傳入ExpandTabView中,讓其接受ExpandTabView的控制。這樣可以保證每個菜單子項的獨立性,可以進行各自的風格化,達到高內聚低耦合的效果。同時爲了每個菜單子項有一些通用的行爲,我在這裏構造了一個基類ViewBaseAction.java。 
再有就是listview在popupwindow中有個奇怪的現象當popupwindow設置爲popupWindow.setFocusable(false)的時候,裏面的listview的監聽事件失效了,我們只能通過自己構造的監聽事件來監聽listview的onitemclick事件。具體實現方式詳見TextAdapter.java這個類。 

Demo地址:https://github.com/yueyueniao2012/ExpandTabView 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章