MDNavBarView下拉导航菜单(仿美团导航下拉菜单)

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

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

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

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

效果图:

时间: 2024-10-07 09:49:19

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

Android自定义下拉刷新动画--仿百度外卖下拉刷新

好久没写博客了,小编之前一段时间一直在找工作,从天津来到了我们的大帝都,感觉还不错.好了废话不多说了,开始我们今天的主题吧.现如今的APP各式各样,同样也带来了各种需求,一个下拉刷新都能玩出花样了,前两天订饭的时候不经意间看到了"百度外卖"的下拉刷新,今天的主题就是它–自定义下拉刷新动画. 看一下实现效果吧: 动画 我们先来看看Android中的动画吧: Android中的动画分为三种: Tween动画,这一类的动画提供了旋转.平移.缩放等效果. Alpha – 淡入淡出 Scale

bootstrap-导航加下拉菜单(二级导航)

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>导航加下拉菜单(二级导航)</title>     <!-- 最新版

用三种方式实现导航菜单中的二级下拉菜单

如何实现导航菜单栏中的二级下拉菜单? 我们在淘宝.搜狐等大型网站上都可以看到使用的一些二级下拉菜单,比如下面这张图片. 但是如何实现类似的图片呢?实际上,我们有至少三种方式来实现,下面,我附上代码供大家参考. 1.仅使用html和css <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</tit

Android自定义控件:仿美团下拉菜单及相关代码优化

背景 最近的项目中用到了类似美团中的下拉多选菜单,在实际开发过程中,也发现了一些问题,主要归纳如下: 1.当菜单较为复杂时,如果不能设计好代码逻辑,将造成控件难于维护 2.美团菜单可以连续点击顶部tab,切换不同菜单,而我使用的popupWindow似乎在展开一个菜单时点击其他tab,菜单就会收回. 本文将针对如上两个问题进行一些讨论,最终给出较为合理的解决方案. 程序结构 由于菜单涉及多级多项,如果把UI和其他逻辑堆在一起写,必然会造成代码过于庞大,甚至没有办法扩展,更谈不上及时变更需求. V

JS实现 网页下拉一段后固定导航条

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

MeiTuanRefreshListView高仿美团下拉刷新《IT蓝豹》

MeiTuanRefreshListView高仿美团下拉刷新 MeiTuanRefreshListView高仿美团下拉刷新,本项目来自:https://github.com/nugongshou110/MeiTuanRefreshListView项目主要构成部分:自定义MeiTuanRefreshFirstStepView,MeiTuanRefreshSecondStepView,MeiTuanRefreshThirdStepView,其中自定义MeiTuanListView继承了ListVie

Javascript 仿苹果导航菜单

使用 Javascript 制作的仿苹果导航菜单,当鼠标移过时,使用勾股定理计算当前鼠标所在位置和图片中心点的距离,并且用一个 scale变量 来存储触发缩放的位置,距离越近,scale值越接近1,图片也就越大,这里需要注意的是当 scale的值小于0.5时,应该让它一直等于0.5,不然图片会随着鼠标距离图片中心的距离越远,图片越小甚至消失. 效果如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4

仿美团二级菜单

最近要做一个仿美团似的二级菜单 在csdn上找了demo 下载下来有错误不能运行   自己又整理了一下  终于可以运行实现效果了.布局xml就不贴出代码了,demo可以去csdn去下载:(后续补上链接) 1)分析思路,最外围的是一个Activity,顶部包含了一个View的容器,这个容器主要是装载ToggleButton来实现诸如美团里面的“美食,全城,理我最近,刷选”这一行.这一行一点就会弹出对应的下来菜单. 2)下拉菜单是如何实现的呢?,这里我们利用了PopupWindow来实现这一弹出式窗

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

最近在项目中需要用到下拉菜单,公司比较推崇美团的下拉菜单,于是要实现该功能,想着,这个功能应该是一个经常会用到的,于是何不写一个帮助类,只要往这个类里面传入特定的参数,既可以实现下来菜单,而且还可以实现菜单选择的回调,既可以重复使用,有简单便捷 首先,查看界面效果图 界面倒是比较简单,主要列下功能: 这个是靠一个帮助类实现的,下次想在自己的项目中实现该功能,一句引用代码,传入特定的参数既可以实现该功能 菜单弹出的时候,背景变灰色,菜单收回,背景回复白色 自动给选定的选项添加背景色,如果下次选择的