Android 如何创建一个';它不在ScrollView中,或者ScrollView已被禁用?
我想要ListView中的一些好东西,比如能够使用ListAdapter、项目选择等等,但我不想要它的ScrollView部分。我想自己以不同的方式实现这一部分(为什么或者如何实现这一点并不是这个问题的重点,所以请不要问“为什么”)Android 如何创建一个';它不在ScrollView中,或者ScrollView已被禁用?,android,listview,scrollview,Android,Listview,Scrollview,我想要ListView中的一些好东西,比如能够使用ListAdapter、项目选择等等,但我不想要它的ScrollView部分。我想自己以不同的方式实现这一部分(为什么或者如何实现这一点并不是这个问题的重点,所以请不要问“为什么”) 有没有办法使列表视图不在滚动视图中或滚动被禁用?aListView不在ScrollView中。ListView本质上是滚动的。我不相信你可以通过一个简单的API禁用滚动。如果是这样,您可以选择将列表视图子类化,并尝试找到覆盖滚动行为的方法,克隆列表视图并消除滚动行为
有没有办法使列表视图不在滚动视图中或滚动被禁用?a
ListView
不在ScrollView
中。ListView
本质上是滚动的。我不相信你可以通过一个简单的API禁用滚动。如果是这样,您可以选择将列表视图
子类化,并尝试找到覆盖滚动行为的方法,克隆列表视图
并消除滚动行为,或者编写自己的AdapterView
,以您想要的方式呈现内容。另一种方法是将列表视图包装到您定制的任何滚动解决方案中。如果您只需将列表视图的高度设置为与所有行的高度完全相同(使用列表视图的布局参数
),那么它将像普通视图一样工作,无法滚动;因此,您可以将其添加到另一个滚动视图中。这种方法的困难在于你必须提前知道列表的高度,所以你必须知道每一行的高度。此外,这将一次创建所有行,因此您将无法利用视图回收功能
如果您没有提前计算高度的简便方法,您可以通过覆盖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);
你在这里的评论非常有用。我向你致敬。