2010-03-10 86 views
2

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

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

回答

1

A ListView不在ScrollView中。 A ListView确实滚动。我不相信你可以通过简单的API禁用滚动。如果是这样,您的选择要么是ListView的子类,并尝试找到重写滚动行为的方法,克隆ListView并消除滚动行为,或编写自己的AdapterView,以便按照需要呈现事物。

+0

好,我会做其中的一个。 – synic 2010-03-10 18:09:04

6

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

如果你没有进行高度测量的时间提前一个简单的方法,你可以通过重写onMeasure,并给予它自己的高度规范欺骗ListView到这样做是为了你:

// 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); 
+0

你在这里评论是令人难以置信的帮助。我向你们致敬。 – 2011-01-27 05:17:55