在ScrollView中嵌套使用ListView,看起来ListView只会显示一行多一点,不能滑动。ListView的高度怎么改都有问题,与预期不符合。搜索了一些解决方案,我觉得最好不要用这样的设计,因为默认情况下android 禁止在ScrollView中放入另外的
ScrollView,它的高度是无法计算的
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。
由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView,
那么里面的ScrollView高度计算就会出现问题。
我们也就无法得到想要的效果。
下面进入正题,我们将讨论ScrollView中嵌套ListView情况。
核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
本帖最后由 小尛龙 于 2013-9-6 10:53 编辑 效果图: ![]() 在ScrollView中嵌套使用ListView,ListView只会显示一行多一点。两者进行嵌套,即会发生冲突。 由于ListView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView, 那么里面的ScrollView高度计算就会出现问题。 我们也就无法得到想要的效果。 下面进入正题,我们将讨论ScrollView中嵌套ListView情况。 核心解决方案: 重写ListView或者GridView的OnMesure 方法。对GridView同样适用。
![]() 没有上面的按钮,一进页面直接显示的是ListView内容,怎么一开始就显示头部。 ScrollView有个属性mScrollView.scrollTo(x, y)可以显示位置。 但是实际却没有达到效果,查了说mScrollView.scrollTo(x, y)首次初始化时无效果。 最后我用了mScrollView.smoothScrollTo(0,0);OK |