开发中可能遇到各种需求 ViewPager+ListView(首页顶部轮播图+产品/新闻列表)是特别常见的一种需求,这里就需要用到外部的ScrollView 嵌套一个内部的ListView 进行一个显示,直接写的话 ScrollView 的滚动条会覆盖掉ListView的滚动条 使它无法滚动,下面是网上收集的一些解决方案,还有一些开发中遇到的一点小技巧,让这种需求更简单的搞定。
经过测试发现,在xml中直接指定ListView的高度,是可以解决这个问题的,但是ListView中的数据是可变的,实际高度还需要实际测量。于是手动代码设置ListView高度的 方法就诞生了。
// 设置适配器后调用此方法传入对应的ListView就可以了大家可以去掉属性测试 再添加属性进行测试,本人一直在用,是完全没问题的。
* makeMeasureSpec第一个参数size给出父布局能容纳的最大高度,这里取约定俗成的无限大一半,
现在有一个需求,是要在Scrollview嵌套之下的Listview,可折叠item数目(默认显示2个item,展开显示全部),固不可采用上面的高度写死方法,采用如下写法:
* 禁止滑动的Listview,可动态设置宽高
// 记录手指按下时的item
// 最关键的地方,忽略MOVE 事件
// 手指按下与抬起都在同一个视图内,交给父控件处理,这是一个点击事件
// 如果手指已经移出按下时的Item,说明是滚动行为,清理Item pressed状态
另外,给出折叠listview写法:
* 原因是listview的item高度要在xml里面起效,都必须套一层wrap的父布局