MagicIndicator icon indicating copy to clipboard operation
MagicIndicator copied to clipboard

不支持ViewPager2

Open PopFisher opened this issue 4 years ago • 7 comments

项目中使用的ViewPager2,可以支持么

PopFisher avatar Jan 07 '21 13:01 PopFisher

fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
    viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            magicIndicator.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
            magicIndicator.onPageScrollStateChanged(state)
        }
    })
}

kartyjoin avatar Mar 05 '21 14:03 kartyjoin

fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
    viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            magicIndicator.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
            magicIndicator.onPageScrollStateChanged(state)
        }
    })
}

指示器会有抖动问题

1181631922 avatar Apr 13 '21 15:04 1181631922

fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
    viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            magicIndicator.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
            magicIndicator.onPageScrollStateChanged(state)
        }
    })
}

指示器会有抖动问题

使用中没遇到过,要不打印一下第一个方法vp传过来的后两个参数?是不是vp有什么问题 vp2本身也是用recyclerview实现的,是不是有什么对他的改动?

kartyjoin avatar Apr 14 '21 04:04 kartyjoin

fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
    viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            magicIndicator.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
            magicIndicator.onPageScrollStateChanged(state)
        }
    })
}

指示器会有抖动问题

使用中没遇到过,要不打印一下第一个方法vp传过来的后两个参数?是不是vp有什么问题 vp2本身也是用recyclerview实现的,是不是有什么对他的改动?

跟踪了一下偏移量,是系统的问题,最后的变化是非线性的

1181631922 avatar May 12 '21 03:05 1181631922

fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
    viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels)
            magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

        override fun onPageSelected(position: Int) {
            super.onPageSelected(position)
            magicIndicator.onPageSelected(position)
        }

        override fun onPageScrollStateChanged(state: Int) {
            super.onPageScrollStateChanged(state)
            magicIndicator.onPageScrollStateChanged(state)
        }
    })
}

指示器会有抖动问题

使用中没遇到过,要不打印一下第一个方法vp传过来的后两个参数?是不是vp有什么问题 vp2本身也是用recyclerview实现的,是不是有什么对他的改动?

跟踪了一下偏移量,是系统的问题,最后的变化是非线性的

我暂时没遇到过这种,知道是偏移量变化问题,可以考虑写个函数处理下返回值,做一下钝化

还是感觉是不是有什么操作让vp2没有完成惯性滑动,vp2一般都是线性完成滑动

kartyjoin avatar May 13 '21 10:05 kartyjoin

同样是遇到了抖动问题,只要是已选择的indicator滑出屏幕,就开始一直抖动。

xuwakao avatar Jul 20 '21 04:07 xuwakao

同样是遇到了抖动问题,只要是已选择的indicator滑出屏幕,就开始一直抖动。

解决了,设置 : isReselectWhenLayout = true

xuwakao avatar Jul 20 '21 04:07 xuwakao