java - Android ViewPager2 - 如何检测用户发起的页面更改

标签 java android android-viewpager2

我有 ViewPager2 回调设置,但需要检测用户发起的页面更改何时完成。回调不会区分用户启动和代码启动。这是我现在拥有的:

ViewPager2.OnPageChangeCallback swipeListener = new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            //I want to run code only if user initiated this page change
            //but this runs whether user initiated or code initiated
        }
}
通过代码完成的页面更改:
viewPager.setCurrentItem(targetSlide);
docs for ViewPager2显示 isUserInputEnabled()告诉您用户是否“可以”手动更改页面的方法,但我需要检测用户是否“确实”启动了页面更改。

最佳答案

您可以使用isFakeDragging里面 registerOnPageChangeCallback检测拖动是假的还是由用户发起的。

Returns true if a fake drag is in progress.

...onPageScrolledonPageScrolled(int position, float positionOffset, int positionOffsetPixels){
    if(isFakeDragging)
        {// fake scroll}
    else{// user scroll}
}

关于java - Android ViewPager2 - 如何检测用户发起的页面更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62575821/

相关文章:

java - 添加一个列表到 Json ObjectNode

android - Flutter 中的 ListView 居中

android - 如何修复 ViewPager2 中的 'Design assumption violated' 错误?

androidx - 使用ViewPager2时如何实现延迟加载?

java - ViewPager2 堆栈 PageTransform

java - jodatime 和 Prettytime 哪个更好

java - 重写equals方法时,我们只使用 'Object obj'作为参数吗?

java - 方法标题中的分号预期错误

android - 如何在不同的线程中生成列表并填充到 ListView 中?

java - 将 View 声明为不可见或将背景设置为透明并在需要时更改其背景资源是否更有效?