如何创建不在ScrollView中的ListView,或禁用ScrollView?

时间:2010-03-10 17:52:47

标签: android listview scrollview

我想要ListView中的一些好东西,比如能够使用ListAdapter和项目选择等,但我不想要它的ScrollView部分。我想以不同的方式自己实现该部分(为什么或如何做到这一点并不是这个问题的重点,所以请不要问“为什么”)。

有没有办法让ListView不在ScrollView中或者滚动禁用?

2 个答案:

答案 0 :(得分:6)

另一种方法是将ListView包装在您已经制作的任何自定义滚动解决方案中。如果您只是将ListView的高度设置为与所有行完全一样高(使用列表视图的LayoutParams),那么它将像普通视图一样无法滚动;因此,您可以将其添加到另一个滚动视图。这种方法的难点在于您必须提前知道列表的高度,因此您必须知道每行的高度。此外,这将同时创建所有行,因此您将无法利用视图回收功能。

如果你没有提前计算身高的简单方法,你可以通过覆盖ListView并给它自己的身高规格来欺骗onMeasure为你做这件事: / p>

// Calculate height of the entire list by providing a very large 
// height hint.  But do not use the highest 2 bits of this integer; 
//  those are reserved for the MeasureSpec mode.
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);

答案 1 :(得分:1)

ListView不在ScrollViewListView确实滚动。我不相信你可以通过一个简单的API禁用滚动。如果是这样,您的选择要么是子类ListView,要么试图找到覆盖滚动行为的方法,克隆ListView并消除滚动行为,或者编写自己的AdapterView,这样可以按照您的方式呈现想。