我已经阅读了很多关于ListView不应该嵌套在ScrollView中的帖子。
我想知道这是否适用于一般的AdapterView?
在编写将被嵌套在ScrollView中的自定义列表视图之前,了解这一点将会很有帮助。我想基于AdapterView来构建它,以便可以像标准ListView那样使用它(以帮助最小化当前与ListView相关的代码的重写)。
谢谢。
我已经阅读了很多关于ListView不应该嵌套在ScrollView中的帖子。
我想知道这是否适用于一般的AdapterView?
在编写将被嵌套在ScrollView中的自定义列表视图之前,了解这一点将会很有帮助。我想基于AdapterView来构建它,以便可以像标准ListView那样使用它(以帮助最小化当前与ListView相关的代码的重写)。
谢谢。
我想知道这是否适用于所有的AdapterView?
总的来说,ScrollView
与其他控件不太兼容。
在编写嵌套在 ScrollView 中的自定义列表视图的大量代码之前,了解它是否适用会很有帮助。
没有必要将 ListView
放入 ScrollView
中。只需将 ScrollView
的其他内容放入 ListView
中,作为头部/尾部视图或使用 my MergeAdapter
等技术即可。
我想基于 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)
getActivity()
以获取托管Activity
,它是一个Context
。 - CommonsWare