Java 如何知道recyclerview smoothscroll何时结束
概述: recycler视图有一个水平布局管理器,在该线性布局管理器中,我覆盖了CanScrollHorizontal方法,因此用户不能自己滚动 我还有一个RecyclerView.SmoothScroller,可以通过编程更改可见项(recycler视图附带了一个PagerSnapHelper,recylcler的每个项都覆盖整个屏幕,使用此功能,recycler视图的工作方式与ViewPager类似) 但是,当我调用方法myRecyclerView.getLayoutManager().startSmoothScroll(smoothScrollerForward)时,无法执行滚动,因为线性布局管理器可以水平滚动并返回always false 如果我在调用startSmoothScroll之前使canScrollHorizontally方法返回true,那么它将工作,但如何知道myRecyclerView.getLayoutManager().startSmoothScroll(smoothScrollerForward)何时结束?这样我就可以将canscroll返回的变量再次水平移动到false 代码如下:Java 如何知道recyclerview smoothscroll何时结束,java,android,android-recyclerview,smooth-scrolling,linearlayoutmanager,Java,Android,Android Recyclerview,Smooth Scrolling,Linearlayoutmanager,概述: recycler视图有一个水平布局管理器,在该线性布局管理器中,我覆盖了CanScrollHorizontal方法,因此用户不能自己滚动 我还有一个RecyclerView.SmoothScroller,可以通过编程更改可见项(recycler视图附带了一个PagerSnapHelper,recylcler的每个项都覆盖整个屏幕,使用此功能,recycler视图的工作方式与ViewPager类似) 但是,当我调用方法myRecyclerView.getLayoutManager().st
private RecyclerView rvCards;
private LinearLayoutManager manager;
private RecyclerView.SmoothScroller smoothScrollerForward;
private int currentPosition;
private boolean horizontalScroll = false;
rvCards = findViewById(R.id.rvCards);
manager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,
false)
{
@Override
public boolean canScrollHorizontally() {
return horizontalScroll;
}
};
rvCards.setLayoutManager(manager);
PagerSnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(rvCards);
smoothScrollerForward = new LinearSmoothScroller(this){
@Override
protected int getHorizontalSnapPreference() {
return LinearSmoothScroller.SNAP_TO_END;
}
};
ivForwardCard.setOnClickListener(v -> {
smoothScrollerForward.setTargetPosition(++currentPosition);
rvCards.getLayoutManager().startSmoothScroll(smoothScrollerForward);
});
public void changeItem(int position) {
horizontalScroll = true;
ivForwardCard.performClick();
}
你有没有找到答案