Android编程实现仿美团或淘宝的多级分类菜单效果示例【附demo源码下载】
发布时间 - 2026-01-10 22:48:48 点击率:次本文实例讲述了Android编程实现仿美团或淘宝的多级分类菜单效果。分享给大家供大家参考,具体如下:

这里要实现的是诸如美团/淘宝/百度糯米 多级分类菜单效果。当分类数量非常多时可以考虑采用两级分类,而诸如美团这种表现方式是一个不错的选择。
首先上效果图:
主要代码:
1. PopupWindow初始化过程:
popupWindow = new PopupWindow(this);
View view = LayoutInflater.from(this).inflate(R.layout.popup_layout, null);
leftLV = (ListView) view.findViewById(R.id.pop_listview_left);
rightLV = (ListView) view.findViewById(R.id.pop_listview_right);
popupWindow.setContentView(view);
popupWindow.setBackgroundDrawable(new PaintDrawable());
popupWindow.setFocusable(true);
popupWindow.setHeight(ScreenUtils.getScreenH(this) * 2 / 3);
popupWindow.setWidth(ScreenUtils.getScreenW(this));
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
darkView.startAnimation(animOut);
darkView.setVisibility(View.GONE);
leftLV.setSelection(0);
rightLV.setSelection(0);
}
});
2.左侧菜单点击事件:
//左侧ListView点击事件
leftLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//二级数据
List<SecondClassItem> list2 = firstList.get(position).getSecondList();
//如果没有二级类,则直接跳转
if (list2 == null || list2.size() == 0) {
popupWindow.dismiss();
int firstId = firstList.get(position).getId();
String selectedName = firstList.get(position).getName();
handleResult(firstId, -1, selectedName);
return;
}
FirstClassAdapter adapter = (FirstClassAdapter) (parent.getAdapter());
//如果上次点击的就是这一个item,则不进行任何操作
if (adapter.getSelectedPosition() == position){
return;
}
//根据左侧一级分类选中情况,更新背景色
adapter.setSelectedPosition(position);
adapter.notifyDataSetChanged();
//显示右侧二级分类
updateSecondListView(list2, secondAdapter);
}
});
3. 右侧菜单点击事件:
//右侧ListView点击事件
rightLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//关闭popupWindow,显示用户选择的分类
popupWindow.dismiss();
int firstPosition = firstAdapter.getSelectedPosition();
int firstId = firstList.get(firstPosition).getId();
int secondId = firstList.get(firstPosition).getSecondList().get(position).getId();
String selectedName = firstList.get(firstPosition).getSecondList().get(position)
.getName();
handleResult(firstId, secondId, selectedName);
}
});
4.顶部标签点击事件(即显示/隐藏 分类菜单)
if (popupWindow.isShowing()) {
popupWindow.dismiss();
} else {
popupWindow.showAsDropDown(findViewById(R.id.main_div_line));
popupWindow.setAnimationStyle(-1);
//背景变暗
darkView.startAnimation(animIn);
darkView.setVisibility(View.VISIBLE);
}
5.根据左侧点击,刷新右侧ListView
//刷新右侧ListView
private void updateSecondListView(List<SecondClassItem> list2,
SecondClassAdapter secondAdapter) {
secondList.clear();
secondList.addAll(list2);
secondAdapter.notifyDataSetChanged();
}
完整实例代码点击此处本站下载。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 仿美团
# 淘宝
# 多级分类菜单
# Android自定义StepView仿外卖配送进度
# Android仿外卖购物车功能
# Android仿百度外卖自定义下拉刷新效果
# Android仿美团下拉菜单(商品选购)实例代码
# Android仿美团分类下拉菜单实例代码
# Android仿美团淘宝实现多级下拉列表菜单功能
# Android模仿美团顶部的滑动菜单实例代码
# 模仿美团点评的Android应用中价格和购买栏悬浮固定的效果
# Android使用RecyclerView仿美团分类界面
# Android仿美团外卖菜单界面
# 的是
# 是一个
# 进阶
# 操作技巧
# 这一
# 相关内容
# 感兴趣
# 给大家
# 如果没有
# 点击此处
# 跳转
# 更多关于
# 所述
# 两级
# 程序设计
# 背景色
# 变暗
# 讲述了
# setHeight
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何注册花生壳免费域名并搭建个人网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
C语言设计一个闪闪的圣诞树
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
网站优化排名时,需要考虑哪些问题呢?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何在万网主机上快速搭建网站?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
常州企业网站制作公司,全国继续教育网怎么登录?
装修招标网站设计制作流程,装修招标流程?
Python并发异常传播_错误处理解析【教程】
利用JavaScript实现拖拽改变元素大小
如何用已有域名快速搭建网站?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何用腾讯建站主机快速创建免费网站?
深入理解Android中的xmlns:tools属性
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
使用C语言编写圣诞表白程序
Android自定义控件实现温度旋转按钮效果
活动邀请函制作网站有哪些,活动邀请函文案?
WordPress 子目录安装中正确处理脚本路径的完整指南
如何实现建站之星域名转发设置?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel如何使用Livewire构建动态组件?(入门代码)
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
再谈Python中的字符串与字符编码(推荐)
Laravel如何配置和使用缓存?(Redis代码示例)
详解CentOS6.5 安装 MySQL5.1.71的方法
网站制作企业,网站的banner和导航栏是指什么?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
高防服务器租用指南:配置选择与快速部署攻略
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
php485函数参数是什么意思_php485各参数详细说明【介绍】
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
上一篇: 南京网站制作咨询公司,南京做网站哪家好?
下一篇:laravel如何引入前端UI
上一篇: 南京网站制作咨询公司,南京做网站哪家好?
下一篇:laravel如何引入前端UI

