如何创建一个ListView,这不是在一个滚动型,或有残疾滚动型?
-
19-09-2019 - |
题
我想一些东西的在ListView,如能够使用ListAdapter,和项目选择等,但我不希望它的滚动型部分。我想要实现自己分开,以不同的方式(为什么或者我该怎么办这是不是真的这个问题的地步,所以请不要问“为什么”)。
有没有办法有一个ListView,这不是在滚动型或已滚动停用?
解决方案
一个ListView
不处于ScrollView
。一个ListView
不instrinsically滚动。我不相信你可以禁用通过简单的API滚动。如果是这样,你的选择是要么继承ListView
,并试图找到方法来超控滚动的行为,克隆ListView
和消除滚动的行为,或者自己写AdapterView
呈现的东西,你所希望的方式。
其他提示
另一种方式做,这是包装在任何自定义滚动解决你炮制ListView
。如果你简单地设置ListView
的高度是完全一样高的所有行(使用列表视图的LayoutParams
),那么它会像一个普通视图,并不会能够滚动;因此,你可以将它添加到另一个滚动视图。这种方法的困难是,你必须知道你的列表的高度时间提前,所以你必须知道每个行的高度。此外,这将创造一次所有行,所以你不能拿视图回收功能的优势。
如果你没有提前进行高度测量的一个简单的方法,你可以欺骗ListView
成通过重写onMeasure
,并给予它自己的高度规范这样做是为了你:
// 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);
不隶属于 StackOverflow