-
Notifications
You must be signed in to change notification settings - Fork 176
Open
Description
这个主要是由于isRecyclerViewTop此方法做判断时由于一些情况下顶部距离可能不为0时导致滑动可能不会触发向下滑动 所以需要固定配置,因人而异配置方法可能不同我的配置方法是:
加一个顶部偏移值
先修改这个HeaderScrollHelper类下的方法:
/**
* 顶部偏移值,主要是给isRecyclerViewTop此方法做判断时由于一些情况下顶部距离可能不为0 所以需要固定配置
*/
private int topOffsetHeight = 0;
修改滑动内容适配器:
public void setCurrentScrollableContainer(ScrollableContainer scrollableContainer, int topOffsetHeight) {
this.mCurrentScrollableContainer = scrollableContainer;
this.topOffsetHeight = topOffsetHeight;
}
源方法isRecyclerViewTop改为这样:
private boolean isRecyclerViewTop(RecyclerView recyclerView) {
if (recyclerView != null) {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
int firstVisibleItemPosition = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
View childAt = recyclerView.getChildAt(0);
RecyclerView.ItemDecoration itemDecoration = recyclerView.getItemDecorationAt(0);
if (childAt == null ||
(firstVisibleItemPosition == 0 && (childAt.getTop() == topOffsetHeight || childAt.getTop() == 0))) {
return true;
}
}
}
return false;
}
然后是修改此HeaderViewPager类下的方法(我修改了一个方法并且加了一个方法):
public void setCurrentScrollableContainer(HeaderScrollHelper.ScrollableContainer scrollableContainer, int topOffset) {
mScrollable.setCurrentScrollableContainer(scrollableContainer, topOffset);
}
public void setCurrentScrollableContainer(HeaderScrollHelper.ScrollableContainer scrollableContainer) {
mScrollable.setCurrentScrollableContainer(scrollableContainer, 0);
}
然后就是特例的一些界面特例处理
headerViewPager.setCurrentScrollableContainer((HeaderViewPagerFragment) fragmentList.get(position),
DensityUtil.dip2px(CustomerDetailActivity.this, 30));
} else {
headerViewPager.setCurrentScrollableContainer((HeaderViewPagerFragment) fragmentList.get(position));
}
至此应该能解决大部分问题了
Metadata
Metadata
Assignees
Labels
No labels