android四级菜单,android实现菜单三级树效果
本文实例为大家分享了android实现菜单三级树展示的具体代码,供大家参考,具体内容如下
以下是部分代码,完整代码请在最下面点击下载:
【MainActivity】
public void treeOnClick() {
// TODO Auto-generated method stub
superAdapter.RemoveAll();
superAdapter.notifyDataSetChanged();
String MenuCatName = getDate("MenuCatName");
String MenuGroupName = getDate("MenuGroupName");
String MenuItemName = getDate("MenuItemName");
// 一级菜单名数组
parent = MenuCatName.split("/");
// 二级菜单名数组
child = MenuGroupName.split("/");
// 三级菜单名数组
grandchild = MenuItemName.split("/");
List superNodeTree = superAdapter
.GetTreeNode();
for (int i = 0; i < parent.length; i++) {
SuperTreeViewAdapter.SuperTreeNode superNode = new SuperTreeViewAdapter.SuperTreeNode();
superNode.parent = parent[i];
for (int j = 0; j < child_grandchild.length; j++) {
TreeViewAdapter.TreeNode node = new TreeViewAdapter.TreeNode();
node.parent = child_grandchild[j][0][0];
for (int k = 0; k < child_grandchild[j][1].length; k++) {
node.childs.add(child_grandchild[j][1][k]);
}
superNode.childs.add(node);
}
superNodeTree.add(superNode);
}
superAdapter.UpdateTreeNode(superNodeTree);
expandableListView.setAdapter(superAdapter);
}
【SuperTreeViewAdapter】
public ExpandableListView getExpandableListView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, TreeViewAdapter.ItemHeight);
ExpandableListView superTreeView = new ExpandableListView(parentContext);
superTreeView.setLayoutParams(lp);
// 去掉子菜单分割线
superTreeView.setDivider(null);
return superTreeView;
}
/**
* 三层树结构中的第二层是一个ExpandableListView
*/
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// 是
final ExpandableListView treeView = getExpandableListView();
final TreeViewAdapter treeViewAdapter = new TreeViewAdapter(
this.parentContext, 0);
// 临时变量取得TreeViewAdapter的TreeNode集合,可为空
List tmp = treeViewAdapter.getTreeNode();
final TreeNode treeNode = (TreeNode) getChild(groupPosition,
childPosition);
tmp.add(treeNode);
treeViewAdapter.updateTreeNode(tmp);
treeView.setAdapter(treeViewAdapter);
// 取得选中的二级树形菜单的父子节点,结果返回给外部回调函数
treeView.setOnChildClickListener(this.stvClickEvent);
/**
* 第二级菜单展开时通过取得节点数来设置第三级菜单的大小
*/
treeView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, (treeNode.childs
.size() + 1) * TreeViewAdapter.ItemHeight + 0);
treeView.setLayoutParams(lp);
}
});
/**
* 第二级菜单回收时设置为标准Item大小
*/
treeView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
TreeViewAdapter.ItemHeight);
treeView.setLayoutParams(lp);
}
});
treeView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0);
return treeView;
}
/**
* 三级树结构中的首层是TextView,用于作为title
*/
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = TreeViewAdapter.getTextView(this.parentContext);
textView.setText(getGroup(groupPosition).toString());
// 设置首层menu标题背景
textView.setBackgroundResource(R.drawable.menu_category);
textView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0);
return textView;
}
效果图:
完整代码下载地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android四级菜单,android实现菜单三级树效果相关推荐
- android 下拉菜单触发_Android实现三级联动下拉框 城市选择器(简单)
主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值 先贴出效果图: 主布局代码: xmlns:tools="http://s ...
- android自定义彩虹,Android彩虹菜单
核心代码: MainActivity.java package com.huatec.myapplication; import android.support.v7.app.AppCompatAct ...
- android仿优酷菜单,Android自定义控件之仿优酷菜单
去年的优酷HD版有过这样一种菜单,如下图: 应用打开之后,先是三个弧形的三级菜单,点击实体键menu之后,这三个菜单依次旋转退出,再点击实体键menu之后,一级菜单会旋转进入,点击一级菜单,二级菜单旋 ...
- Android自定义控件:优酷菜单
优酷菜单 常用控件回顾 布局文件实现 代码处理逻辑 解决bug的两种方法(ViewGroup和属性动画) 常用控件回顾 按钮控件(Button和ImageButton) ImageButton继承自I ...
- android实现底部弹出菜单,Android实现底部缓慢弹出菜单
项目要求要做一个从底部缓慢弹出一个Button Menu 开始编码: MyselfFragment package io.dcloud.H5B79C397.fragment; import andro ...
- Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动...
需求:现要实现一个特殊UI的处理,如下图所示: 该布局的上面是一个"按钮",中间是一个"空白布局(当然也可以是ViewPager等)",下面是一个页面的导航菜单 ...
- Android之自定义横向滚动菜单
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52186398 本文出自:[顾林海的博客] ##前言 已经好长时间没更新 ...
- Android之选项菜单和上下文菜单解析
选项菜单 创建选项菜单 Activity类的onCreateOptionMenu事件方法用来创建选项菜单,该方法定义如下: @Overridepublic boolean onCreateOption ...
- Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
SlidingMenu作为最常用到的几个开源项目之一,最初,这个是在IOS上有的,之后被应用到了android上,在google自己原生态的侧拉菜单NavigationDrawer没出现之前,这个效果 ...
- android开发菜单,Android学习指南之十六:Android菜单详解
Android用户界面的组成除了View外,还包括菜单和对话框,本节我们先来学习一下菜单的使用方法. 菜单Menu是Android用户界面中最常见的元素之一,使用非常频繁.Android菜单主要分为三 ...
最新文章
- 阿里达摩院已经研发出第一个可控的量子比特
- 使用native 查询时,对特殊字符的处理。
- boost::fusion::transform_view用法的测试程序
- java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...
- 使用Nginx+Memcache做页面缓存
- mac 允许任何源 软件安装 -- 在安全模式中没有显示
- 芯片5nm和7nm有什么差别?CPU已经很小了,可以做大点吗?
- 云络科技服务器管理基础架构
- javaEE插件安装
- access h3c交换机光口_华为交换机的配置及:access、trunk、hybird端口详解
- linux上多个CUDA切换使用(小白教程)
- Java 动态代理机制讲解(Proxy.newProxyInstance)
- 注册坚果云无法连接服务器,坚果云无法连接服务器怎么办?
- R语言入门与数据分析(2)
- 利用Java实现将华氏温度转换为摄氏温度
- 电脑D盘格式化了怎么恢复
- Linux下服务器开发的必要准备
- Fabric链码常用API文档
- Azure学习笔记2.——六种虚拟网络连接
- 第十三届蓝桥杯大赛软件赛决赛C组C++
热门文章
- 【图像去噪】基于matlab改进非局部均值红外图像混合噪声【含Matlab源码 1640期】
- 【滤波器】基于matlab GUI分数延迟滤波器设计【含Matlab源码 1347期】
- 【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】
- 【答题卡识别】基于matlab Hough变换答题卡识别【含Matlab源码 250期】
- ai的利与弊 辩论_为什么AI辩论失败了
- orm php 自定义,Eloquent ORM 自定义 builder
- linux清除占用端口,Linux中解除端口占用的方法
- html4与java混编,JavaWeb04-HTML篇笔记(四)
- 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0
- if else if语句格式_Python中的if条件语句