当前位置:   article > 正文

android 多级下拉菜单实现教程

android多级下拉菜单

           原创,如转载请标明链接: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 下方,见布局文件;

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. tools:context="com.shrg.jackli.morelevelmenu.MainActivity">
  7. <LinearLayout
  8. android:id="@+id/titlebar"
  9. android:layout_width="match_parent"
  10. android:layout_height="40dp"
  11. android:orientation="horizontal"
  12. android:background="@android:color/black"
  13. android:gravity="center_vertical">
  14. <ImageView
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:onClick="showListMenu"
  18. android:src="@mipmap/ic_menu"
  19. />
  20. </LinearLayout>
  21. <ListView
  22. android:id="@+id/listView"
  23. android:background="@android:color/holo_blue_dark"
  24. android:layout_below="@id/titlebar"
  25. android:layout_width="100dp"
  26. android:layout_height="wrap_content"
  27. ></ListView>
  28. <TextView
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:text="New Text"
  32. android:textSize="25sp"
  33. android:id="@+id/textView"
  34. android:layout_centerVertical="true"
  35. android:layout_centerHorizontal="true" />
  36. </RelativeLayout>
3.程序中将listview 控件关联起来 ,将listview 填充数据,监听listview 每一项

  1. mListView =(ListView)findViewById(R.id.listView);
  2. mListView.setVisibility(View.GONE);
  3. mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,province));
  4. mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  5. @Override
  6. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  7. pop_listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
  8. android.R.layout.simple_list_item_1,pandc[position]));
  9. firstMenuIndex = position;
  10. popupWindow.showAsDropDown(mListView,view.getMeasuredWidth(),-mListView.getMeasuredHeight());
  11. }
  12. });
4.初始化popuwindow,监听popuwindow中listview 中子项, 监听到点击二级菜单后隐藏一级和二级菜单

  1. private void initPopupWindow() {
  2. pop_listView = (ListView)LayoutInflater.from(this).inflate(R.layout.popupwindow,null);
  3. pop_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  4. @Override
  5. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  6. showText.setText(pandc[firstMenuIndex][position]);
  7. popupWindow.dismiss();
  8. mListView.setVisibility(View.GONE);
  9. }
  10. });
  11. popupWindow = new PopupWindow(pop_listView, 150,
  12. ViewGroup.LayoutParams.WRAP_CONTENT);
  13. popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  14. popupWindow.setFocusable(true);
  15. }

 效果图:


demo 下载地址

 

转载于:https://www.cnblogs.com/sharecenter/p/5621015.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/111916?site
推荐阅读
相关标签
  

闽ICP备14008679号