我想要一些ListView中的好东西,比如能够使用ListAdapter和项目选择等,但我不想要它的ScrollView部分。我想以不同的方式自己实现这个部分(为什么或者我怎么做这个不是真正的问题点,所以请不要问“为什么”)。如何创建不在ScrollView中的ListView或禁用了ScrollView?
有没有办法让ListView不在ScrollView中或禁用滚动?
我想要一些ListView中的好东西,比如能够使用ListAdapter和项目选择等,但我不想要它的ScrollView部分。我想以不同的方式自己实现这个部分(为什么或者我怎么做这个不是真正的问题点,所以请不要问“为什么”)。如何创建不在ScrollView中的ListView或禁用了ScrollView?
有没有办法让ListView不在ScrollView中或禁用滚动?
A ListView
不在ScrollView
中。 A ListView
确实滚动。我不相信你可以通过简单的API禁用滚动。如果是这样,您的选择要么是ListView
的子类,并尝试找到重写滚动行为的方法,克隆ListView
并消除滚动行为,或编写自己的AdapterView
,以便按照需要呈现事物。
另一种方法是将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);
你在这里评论是令人难以置信的帮助。我向你们致敬。 – 2011-01-27 05:17:55
好,我会做其中的一个。 – synic 2010-03-10 18:09:04