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

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

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

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. HttpRuntime.Cache 失效

    最近做一个报纸内容类网站,为了提高响应速度,将首页各栏目以及二级栏目中Part文献列表存储在HttpRuntime.Cache缓存中,发布后发现问题,刚插入的缓存很快就失效,本机调试没有问题. 由于H ...

  2. [ACM] hdu 1181 变形课

    变形课 Problem Description 呃......变形课上Harry碰到了一点小麻烦,由于他并不像Hermione那样可以记住全部的咒语而任意的将一个棒球变成刺猬什么的,可是他发现了变形咒 ...

  3. Methods throughout the lifespan of a view controller

    Method                                DescriptionloadView                              Creates or re ...

  4. QML学习笔记之一

    摘自<Qt Quick中文手册> Qt Quick提供了一套高动态,丰富的QML元素来定制用户界面的说明性框架. Qt Quick包含了QtDeclarative C++模块.QML,并且 ...

  5. 关于C#资源文件操作的总结

    // 在这里,我来总结一下关于资源文件的相关操作. //1. 比较常见的有获取资源文件对应的文件流,然后转换到相对应的文件 // 比较典型的做法是通过代码程序集加载指定资源 // 如下通过Assemb ...

  6. iOS 设计模式之抽象工厂

    设计模式是程序提升的必备知识,这里说下iOS怎样实现抽象工厂设计模式.本文是看过oc编程之道这本的抽象工厂这章后写出的,假设不明确原理能够看看那本书. TestView.h首先创建一个视图 // // ...

  7. TCP/IP数据包结构具体解释

    [关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构, ...

  8. SQL Server事务日志介绍

    SQL Server中的数据库都是由一或多个数据文件以及一或多个事务日志文件组成的. 顾名思意,数据文件主要存储数据库的数据,包括数据库内容结构,数据页,索引页等等.那么事务日志到底是干什么的呢?它主 ...

  9. [原创]SQL SERVER 2008R2安装

    配置系统环境说明 操作系统:Windows 7 操作系统版本:旗舰版 SP1 操作系统位数:x64 注:其它系统配置也基本相似,只是可能菜单的名字或者所处位置不一样,具体的配置如有不同,请自行搜索 安 ...

  10. 终端I/O之波特率函数

    波特率(baud rate)是一个以往采用的术语,现在它指的是"位/秒"(bits per second).虽然大多数终端设备对输入和输出使用同一波特率,但是只要硬件许可,可以将它 ...