說到下拉導航菜單這個東西用得還真很多,細心算一下作開發以來這樣的菜單已經寫了第三次了,但基本都是不能複用。感受特累人。
不經意看到同事寫一個相似的下拉菜單,但他引用了開源庫仿大衆菜單的庫,大體看了一下,感受挺不錯的,複用性也比較好,但要java
是換成別的樣式就要去修改代碼了,感受這有點不方便也比較容易出錯。因而參照他的大體思路寫了一個仿下拉菜單。android
具體的實現就很少說了,以爲有意思的話能夠下來看看。下面說一下使用方法吧:git
一、添加navbarview包下的代碼與對應資源github
二、佈局文件中添加:ide
<com.mr_mo.mdnavbarview.navbarview.MDNavBarView android:id="@+id/mdNavBarView" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/> </com.mr_mo.mdnavbarview.navbarview.MDNavBarView>
三、添加導航item:佈局
INavBarItemView itemViewAdress = new MDNavBarItemTitleView(this); itemViewAdress.setTitle("地區"); // itemViewAdress.setTitleColorSelect(Color.RED); INavBarItemView itemViewTime = new MDNavBarItemTitleView(this); itemViewTime.setTitle("時間段"); // itemViewTime.setTitleColorSelect(Color.RED); INavBarItemView itemViewFilter = new MDNavBarItemTitleView(this); itemViewFilter.setTitle("篩選"); // itemViewFilter.setTitleColorSelect(Color.RED); List list = new ArrayList(); list.add(itemViewAdress); list.add(itemViewTime); list.add(itemViewFilter); mdNavBarView.setNavBarItemView(list); mdNavBarView.setNavBarViewBGColor(Color.WHITE);
四、添加導航對應的item操做頁面this
MDNavBarPopupSortView sortView1 = new MDNavBarPopupSortView(this); sortView1.setBackgroundColor(Color.YELLOW); sortView1.setNavBarPopupViewHeight(210);//設置下拉菜單的高度 sortView1.setOnNavBarPopupSelectListener(new NavBarPopupSelectListener() { @Override public void onSelect(View view, int index, Object itemData) { mdNavBarView.hide(); mdNavBarView.isShowNavBarItemIcon(false, index); NavBarSortModel model = (NavBarSortModel) itemData; mdNavBarView.setNavBarItemTitle(model.getTitle(), index);//更新導航標題 } }); List listOperateView = new ArrayList(); listOperateView.add(sortView); listOperateView.add(sortView1); listOperateView.add(sortView2); mdNavBarView.setNavBarPopupOperateView(listOperateView);
上面介紹的是內置的樣式,下面說說如何拓展本身的樣式spa
一、自定義導航菜單的item,在本身的實現類中繼承INavBarItemView並實現裏面的全部方法,具體能夠參考MDNavBarItemTitleView.javacode
二、自定義導航菜單對應的操做界面,在本身的實現類中繼承INavBarPopupView並實現裏面的全部方法,具體能夠參考MDNavBarPopupSortView.javablog
有興趣的朋友下載來看看:https://github.com/MrxMo/MDNavBarView
效果圖: