Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道recyclerview smoothscroll何时结束_Java_Android_Android Recyclerview_Smooth Scrolling_Linearlayoutmanager - Fatal编程技术网

Java 如何知道recyclerview smoothscroll何时结束

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

概述:

recycler视图有一个水平布局管理器,在该线性布局管理器中,我覆盖了CanScrollHorizontal方法,因此用户不能自己滚动

我还有一个RecyclerView.SmoothScroller,可以通过编程更改可见项(recycler视图附带了一个PagerSnapHelper,recylcler的每个项都覆盖整个屏幕,使用此功能,recycler视图的工作方式与ViewPager类似)

但是,当我调用方法myRecyclerView.getLayoutManager().startSmoothScroll(smoothScrollerForward)时,无法执行滚动,因为线性布局管理器可以水平滚动并返回always false

如果我在调用startSmoothScroll之前使canScrollHorizontally方法返回true,那么它将工作,但如何知道myRecyclerView.getLayoutManager().startSmoothScroll(smoothScrollerForward)何时结束?这样我就可以将canscroll返回的变量再次水平移动到false

代码如下:

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();
    }

你有没有找到答案