我已经阅读了许多帖子,指出 ListView 不应嵌套在 ScrollView 中。
我想知道这是否适用于所有 AdapterView 的一般情况?
在为将嵌套在 ScrollView 中的自定义列表视图编写一大堆代码之后,在发现之前了解会很有帮助。我想以 AdapterView 为基础,以便可以像使用标准 ListView 一样使用它(以帮助最大限度地减少对当前 ListView 相关代码的重写)。
谢谢你。
我已经阅读了许多帖子,指出 ListView 不应嵌套在 ScrollView 中。
我想知道这是否适用于所有 AdapterView 的一般情况?
在为将嵌套在 ScrollView 中的自定义列表视图编写一大堆代码之后,在发现之前了解会很有帮助。我想以 AdapterView 为基础,以便可以像使用标准 ListView 一样使用它(以帮助最大限度地减少对当前 ListView 相关代码的重写)。
谢谢你。
我想知道这是否适用于所有 AdapterView 的一般情况?
总的来说,ScrollView
和其他孩子玩得不太好。
在为将嵌套在 ScrollView 中的自定义列表视图编写一大堆代码之后,在发现之前了解会很有帮助。
无需将 a 放入 aListView
中ScrollView
。只需将其他内容ScrollView
放入ListView
自身,作为页眉/页脚视图,或使用myMergeAdapter
或类似技术。
我想以 AdapterView 为基础,以便可以像使用标准 ListView 一样使用它
AdapterView
从头开始创建自定义并不容易。如果您查看 的源代码ListView
及其AbsListView
直接父级,则有数千行代码。根据我的前一段,将 的内容ScrollView
放入中会简单得多。ListView
如果您想在 ScrollView 中嵌套 ListView,我认为它会起作用。它使用起来很简单,因为它扩展了 ListView 并且只覆盖了一种方法。
唯一的错误是您可能需要使用scrollView.smoothScrollTo(0, 0)
将滚动位置设置为头部。
public class ScrollListView extends ListView{
public ScrollListView(Context context) {
super(context);
}
public ScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
最后,将滚动位置设置为头部。
scrollView.smoothScrollTo(0, 0)