ScrollView嵌套Listview,你会遇到的问题(1)!
发布日期:2021-07-30 03:26:12
浏览次数:11
分类:技术文章
本文共 1441 字,大约阅读时间需要 4 分钟。
做开发的时候,把两个都能滑动的控件(同方向滑动),总会遇到滑动事件冲突的状况,有时候会滑动失效,有时候会显示不正常。这里讲讲ScrollView嵌套Listview可能会出现的问题。
问题描述:你在ScrollView放了一个Listview,它们两个的高度属性都是match_parent,但是,你的ListView死活就是只给你显示一行,无论怎么设置高度。你怕不怕?
其实只要找到原因了,问题自然好解决。 很显然,listview不知道自己的高度了。为什么会这样的原因?因为listview要根据ParentView来来计算自己所处的位置和高度的。把 listview在ScrollView中,ScrollView的高度是很高很高的。所以他才可以包裹很多内容让你滑动,这不,ListView就懵逼了,它不知道自己该有多高。你只要告诉它,它有多高就行了。 计算挺简单的,不多说,重要的是上面的原因,具体怎么体现的。自己好好想想。public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, listView); // 计算子项View 的宽高 listItem.measure(0, 0); // 统计所有子项的总高度 totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
下一节说明,滑动失效的问题!
转载地址:https://blog.csdn.net/u010886975/article/details/73124133 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月22日 18时00分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
用C语言写PHP扩展
2019-04-27
PHP Extension programming
2021-06-30
海量数据处理
2021-06-30
PHP防止注入攻击
2021-06-30
多路IO复用模型 select epoll 等
2021-06-30
Linux Epoll介绍和程序实例
2019-04-27
output_buffering详细介绍
2019-04-27
php缓冲 output_buffering和ob_start
2019-04-27
php error_reporting 详解
2019-04-27
剖析PHP中的输出缓冲
2019-04-27
HTTP响应头不缓存
2019-04-27
apache的keepalive和keepalivetimeout(apache优化)
2019-04-27
内容协商 (Content Negotiation)
2019-04-27
关于URL编码
2019-04-27
HTTP中的缓存
2019-04-27
Varnish 和 Squid比较到底强多少
2019-04-27
mysql常用语句集锦
2019-04-27
PHP的Smarty
2019-04-27
ecshop模板的原理分析
2019-04-27
深入探究Smarty模版
2019-04-27