TL; DR - ViewPager作为ListView标头创建了一些问题。
我的活动有一个ListView,它提供了几种类型的数据。 我有一个HeaderView,一个粘滞的视图,其余的数据是"正常"列表项目。
我正在使用此库 - > https://github.com/LarsWerkman/QuickReturnListView 对于我的列表视图。
在我的HeaderView中,我有一个用于我的用户的2张个人资料图片的视图寻呼机。
2个问题:
答案 0 :(得分:2)
我有同样的问题, 尝试删除列表视图的第三方库, 在那天我使用同一个并且它真的很快。 改为使用普通的列表视图。
答案 1 :(得分:1)
几个月前,我做了一个类似的伎俩。我尝试了网上几乎所有关于这个快速返回的库,所有这些都有错误,不适合我。也不适用于包含viewpager的标头。
后来我实现了自己的滚动监听器。这不是一个快速返回标题模式,但如果你有时间,你可以添加动画。
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@SuppressLint("NewApi")
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int scrollOffset = 0;
float transitionY;
if (firstVisibleItem > 0) {
scrollOffset += headerHeight;
if (firstVisibleItem > 1) {
scrollOffset += (firstVisibleItem - 1) * cellHeight;
}
}
if (listView.getChildCount() > 0) {
scrollOffset += -listView.getChildAt(0).getTop();
scrollOffset = -scrollOffset;
}
float scrollDelta = scrollOffset - prevOffset;
float nextY = mQuickReturnView.getY() + scrollDelta;
if (nextY < minRawY) {
transitionY = minRawY;
}
else if (nextY > qReturnDelta) {
transitionY = qReturnDelta;
}
else {
transitionY = nextY;
}
mQuickReturnView.setY(transitionY);
prevOffset = scrollOffset;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
我在标题中使用了一个视图寻呼机和一个pageradapter。在我的解决方案中,您必须对listview项使用固定大小,并将其声明为 CellHeight ,并为标头指定固定大小。它的 QuickReturnHeight
使用ListView + Header + ViewPager实现此模式有点困难。
我希望这会帮助你。