原创,如转载请标明链接:http://blog.csdn.net/q610098308/article/details/50333387

很多App,都有二级菜单出现,但android 本身实现的菜单又比较难看;前些天我自己思想了一个,供大家学习,为方便学习,这里我只用最简单的字符串菜单,如果大家想用更复杂或好看的,可以自定义listview 的子项即可。

一.首先看一下实现思路:

1. 使用上方按钮来弹出一级菜单,如果在弹出状态,再点击隐藏;

2. 点击一级菜单子项,弹出二级菜单,二级菜单里面也是一个listview 控件;

3. 点击二级菜单点击菜单的内容;

二 .实现

就是这么简单,下面来看一下具体实现:

1.在AndroidManifest.xml 设置主题为NoTitleBar

android:theme="@style/Theme.AppCompat.NoActionBar">

2.在布局文件中添加自定义titlebar,并添加 listview 控件在title 下方,见布局文件;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.shrg.jackli.morelevelmenu.MainActivity"><LinearLayoutandroid:id="@+id/titlebar"android:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal"android:background="@android:color/black"android:gravity="center_vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="showListMenu"android:src="@mipmap/ic_menu"/></LinearLayout><ListViewandroid:id="@+id/listView"android:background="@android:color/holo_blue_dark"android:layout_below="@id/titlebar"android:layout_width="100dp"android:layout_height="wrap_content"></ListView><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Text"android:textSize="25sp"android:id="@+id/textView"android:layout_centerVertical="true"android:layout_centerHorizontal="true" /></RelativeLayout>

3.程序中将listview 控件关联起来 ,将listview 填充数据,监听listview 每一项

        mListView =(ListView)findViewById(R.id.listView);mListView.setVisibility(View.GONE);mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,province));mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {pop_listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,pandc[position]));firstMenuIndex = position;popupWindow.showAsDropDown(mListView,view.getMeasuredWidth(),-mListView.getMeasuredHeight());}});

4.初始化popuwindow,监听popuwindow中listview 中子项, 监听到点击二级菜单后隐藏一级和二级菜单

    private void initPopupWindow() {pop_listView = (ListView)LayoutInflater.from(this).inflate(R.layout.popupwindow,null);pop_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {showText.setText(pandc[firstMenuIndex][position]);popupWindow.dismiss();mListView.setVisibility(View.GONE);}});popupWindow = new PopupWindow(pop_listView, 150,ViewGroup.LayoutParams.WRAP_CONTENT);popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));popupWindow.setFocusable(true);}

效果图:

demo 下载地址

android 多级下拉菜单实现教程相关推荐

  1. qml中使用combobox实现多级菜单_excel实用技巧:如何构建多级下拉菜单

    编按:哈喽,大家好!说到做下拉菜单,小伙伴们都知道直接使用Excel中的数据验证就可以实现,但是二级.三级,甚至更多级的下拉菜单,可能就有点蒙圈了.其实用Excel制作三级下拉菜单,一点都不难,它就跟 ...

  2. Bootstrap 多级下拉菜单

    在很多时候,我们可能需要多级下拉菜单.在一个下拉菜单的某个菜单项中,再创建另一个下拉菜单,即可实现多级下拉菜单. 只需为下拉菜单的任意 <li> 元素添加 .dropdown-submen ...

  3. php excel多级下拉菜单自动生成,Excel中任意多级下拉菜单的制作方法

    Excel下拉菜单,工作中经常会用到.一和二级下拉菜单有很多教程,比葫芦画瓢也能学会,但三级和三级以上的估计就没几个人能做出来了.本站小编无意间制作出一个下拉菜单模板,不仅1~4级可以设置,而且可以设 ...

  4. iOS 多级下拉菜单

    前言 App 常用控件 -- 多级下拉菜单, 如团购类, 房屋类, 对数据进行筛选. 有一级, 二级, 三级, 再多就不会以这种样式,呈现给用户了. 作者就简单聊一下 多级下拉菜单 二级下拉筛选菜单. ...

  5. 基于jQuery带图标的多级下拉菜单

    之前为大家分享了很多导航菜单.今天我们要来分享一款很不错的jQuery左侧带小图标的多级下拉菜单,菜单是垂直的,每一个菜单项带有一个小图标,看起来非常专业.并且菜单支持无限极下拉,所以对各位Web开发 ...

  6. 15个精心挑选的 jQuery 下拉菜单制作教程

    下拉菜单是网站导航常用的表现形式之一,能够呈现更多的导航内容.如果网站能够设计出有吸引力的网站导航,将会吸引更多的用户去浏览网站的内容.今天本文就为大家挑选了25个非常好的 jQuery 下拉菜单制作 ...

  7. jquery实现多级下拉菜单

    支持多种浏览器,体验效果: http://keleyi.com/keleyi/phtml/jqmenu/4.htm 多级菜单,理论上支持无限多的层级,文件结构非常简单的,以下是完整代码: 1 < ...

  8. 手动制造报错_告别手动录入数据的错误,Excel多级下拉菜单怎么制作?

    知识改变命运,科技成就未来.Microsoft Excel数据录入是我们常会遇到的情况,尤其是对于固定数据的录入,每个人的习惯不同,录入的数据也会千差万别,对后期的数据统计造成不便,有什么办法能解决这 ...

  9. excel实用技巧:如何构建多级下拉菜单

    使用数据有效性制作下拉菜单对大多数小伙伴来说都不陌生,但说到二级和三级下拉菜单大家可能就不是那么熟悉了. 什么是二级和三级下拉菜单呢?举个例子,在一个单元格选择某个省后,第二个单元格选项只能出现该省份 ...

最新文章

  1. 136 Single Number(找唯一数Medium)
  2. 利用霍夫梯度法进行圆检测的原理概要及OpenCV代码实现
  3. 课堂作业_什么是图灵测试
  4. 货拉拉携手神策数据,数据赋能企业,实现多元颠覆式创新
  5. 怎样添加、移除、移动、复制、创建和查找节点?
  6. php多进程 写入文件_PHP多进程中使用file_put_contents安全吗?
  7. Web Hacking 101 中文版 九、应用逻辑漏洞(三)
  8. Java中字节输入输出流
  9. 《Arduino开发实战指南:机器人卷》一1.3 安装Arduino Uno驱动
  10. set nocount on的疑问 set nocount on作用 set nocount on什么意思
  11. 【Driver】协作安装程序
  12. 严蔚敏数据结构习题第十章
  13. pip install -r requirements.txt 报错。
  14. 标竿学习 - 一项有效的管理工具(转载)
  15. word for mac 输入拼音时出现方框
  16. 关于用Unity实现校区AR导航毕业设计的建议
  17. Ant Design Pro 从零到一教程
  18. 随处可见抢眼美女 TechED盛宴人潮汹涌
  19. 胡阳pyhton作业题--20150728
  20. Android中指南针的实现

热门文章

  1. 0基础学数据分析 那些黑客常用的网址
  2. centos下配置nagios监控主机及服务的总结
  3. 国内优秀前端 CDN,Google Fonts 国内镜像
  4. 微信小程序,canvas使用fillText()文字错位问题解决方案
  5. 史上最感人的10大爱情传奇
  6. Java服务器失去响应_Web服务响应未从我的服务器返回 - java
  7. 2021年A特种设备相关管理(锅炉压力容器压力管道)考试题库及A特种设备相关管理(锅炉压力容器压力管道)最新解析
  8. svn revert批量撤回本地修改操作
  9. 消防报警器相关的知识
  10. van der Aalst真牛