hackware1993 / MagicIndicator

A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框架。是ViewPagerIndicator、TabLayout、PagerSlidingTabStrip的最佳替代品。支持角标,更支持在非ViewPager场景下使用(使用hide()、show()切换Fragment或使用setVisibility切换FrameLayout里的View等),http://www.jianshu.com/p/f3022211821c
9.68k stars 1.54k forks source link

ViewPagerHelper.bind(magicIndicator, mViewPager); 不支持传ViewPager2 ? #283

Open xuleijvbw opened 2 years ago

WuFengXue commented 2 years ago

好像不支持,自己做个简单的移植就可以了

import androidx.viewpager2.widget.ViewPager2
import net.lucode.hackware.magicindicator.MagicIndicator

/**
 * 新版页卡的绑定辅助工具,移植自 [net.lucode.hackware.magicindicator.ViewPagerHelper]。
 *
 * @author Reinhard
 * @date 2022/3/25
 */
class ViewPager2Helper {
    companion object {
        fun bind(magicIndicator: MagicIndicator, viewPager: ViewPager2) {
            viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
                override fun onPageScrolled(
                    position: Int,
                    positionOffset: Float,
                    positionOffsetPixels: Int
                ) {
                    magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels)
                }

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

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