说到下拉导航菜单这个东西用得还真不少,细心算一下做开发以来这样的菜单已经写了第三次了,但基本都是不能复用。感觉特累人。
不经意看到同事写一个类似的下拉菜单,但他引用了开源库仿大众菜单的库,大致看了一下,感觉挺不错的,复用性也比较好,但要

是换成别的样式就要去修改代码了,感觉这有点不方便也比较容易出错。于是参照他的大致思路写了一个仿下拉菜单。

具体的实现就不多说了,觉得有意思的话可以下来看看。下面说一下使用方法吧:

1、添加navbarview包下的代码与对应资源

2、布局文件中添加:

<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>

3、添加导航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);

4、添加导航对应的item操作页面

 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);

上面介绍的是内置的样式,下面说说如何拓展自己的样式

1、自定义导航菜单的item,在自己的实现类中继承INavBarItemView并实现里面的所有方法,具体可以参考MDNavBarItemTitleView.java

2、自定义导航菜单对应的操作界面,在自己的实现类中继承INavBarPopupView并实现里面的所有方法,具体可以参考MDNavBarPopupSortView.java

有兴趣的朋友下载来看看:https://github.com/MrxMo/MDNavBarView

效果图:

MDNavBarView下拉导航菜单(仿美团导航下拉菜单)的更多相关文章

  1. [RN] React Native 仿美团下拉筛选菜单控件

    React Native 仿美团下拉筛选菜单控件 演示效果如下: 使用方法如下: 1.安装 npm install react-native-dropdownmenus --save react-na ...

  2. html、css实现导航栏5种常用下拉效果

    实现的效果:鼠标移入按钮时按钮中的内容就会出现,分别展示不同的出现效果.效果难点:不使用JavaScript,那这个效果的难点就是在于:hover伪类的掌控,以及考验对html的结构掌握. 1. ht ...

  3. listview下拉刷新上拉加载扩展(二)-仿美团外卖

    经过前几篇的listview下拉刷新上拉加载讲解,相信你对其实现机制有了一个深刻的认识了吧,那么这篇文章我们来实现一个高级的listview下拉刷新上拉加载-仿新版美团外卖的袋鼠动画: 项目结构: 是 ...

  4. Android自定义控件之仿美团下拉刷新

    美团的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随着下拉的距离动态改变其大小. 第二个部分为放开刷新状态(release to r ...

  5. CSS+JS下拉菜单和纯CSS下拉菜单

    下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...

  6. Android开发:仿美团下拉列表菜单,帮助类,复用简单

    近期在项目中须要用到下拉菜单.公司比較推崇美团的下拉菜单,于是要实现该功能.想着.这个功能应该是一个常常会用到的.于是何不写一个帮助类,仅仅要往这个类里面传入特定的參数,既能够实现下来菜单,并且还能够 ...

  7. Android开发之多级下拉列表菜单实现(仿美团,淘宝等)

    注:本文转载于:http://blog.csdn.net/minimicall/article/details/39484493 我们在常用的电商或者旅游APP中,例如美团,手机淘宝等等,都能够看的到 ...

  8. JavaScript网站设计实践(二)实现导航栏当前所选页面的菜单项高亮显示

    一.(一)中的代码还可以修改的地方. 在(一)中,如果是运行在服务器下,如apache等,可以把head和navigation的div抽取出来,放置在另一个html文件里,然后在页面中,include ...

  9. html自定义垂直导航菜单(多级导航菜单,去掉font-awesome图标,添加自己的箭头图标)

    这次在原先html自定义垂直导航菜单的基础上做了比较大的改动: 1.去掉了font-awesome图标,上级菜单右边的箭头是自己用css写的,具体参考<css三角箭头>. 2.去掉了初始化 ...

随机推荐

  1. 【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]

    Fresco简单的使用—SimpleDraweeView 百学须先立志—学前须知: 在我们平时加载图片(不管是下载还是加载本地图片…..)的时候,我们经常会遇到这样一个需求,那就是当图片正在加载时应该 ...

  2. pic/at89c2051 programmer

    http://dangerousprototypes.com/forum/viewtopic.php?t=170 It looks like the PICKIT2 uses a small boos ...

  3. SAE J2534 Pass-Thru API

    Connects to the OBDII J1962 DLC and supports the following protocols. 1 CAN2 Single Wire2 J1850PWM+ ...

  4. 如何查询redhat的版本信息

    cat /etc/redhat-release lsb_release -a

  5. Cocos2D-x权威指南:通过节点控制屏幕中的全体渲染对象

    本节,已经能够利用我们眼下所学的知识做出一些有趣的东西.之前已经说过,CCNode类没有贴图,也就是说在屏幕上单独建立一个节点是没有不论什么效果的,可是能够通过这个"无形"的节点来 ...

  6. c#(asp.net)杂谈笔记

    1.js解析json格式的时间 //转换json格式时间的方法 如Date(1340239979000)转换为正常 function ConvertJSONDateToJSDateObject(JSO ...

  7. [Angular2 Form] Create Radio Buttons for Angular 2 Forms

    Using Radio Buttons in Angular 2 requires a basic understanding of forms as well as how their labels ...

  8. Objective-C面向对象的编程

    Objective-C面向对象的编程 目录 对面向对象编程思想的理解 类的声明和定义 类的声明和定义 对关键字super和self的理解 初始化函数 @property声明类成员 类的实例化 继承 组 ...

  9. Quartz表达式

    “*”字符代表所有可能的值 因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天 “/”字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从 ...

  10. js获取非行间样式/定义样式

    <!--DOCTYPE html--> <html> <head> <meta charset="utf-8" /> <sty ...