H07000223 / FlycoTabLayout

An Android TabLayout Lib
MIT License
11.05k stars 2.42k forks source link

SlidingTabLayout不支持Viewpager2 #551

Open Ketty0725 opened 1 year ago

Ketty0725 commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?

CPC-Coder commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?

CPC-Coder commented 1 year ago

能竖着使用么

gggjmhjmh commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?

Tomdoog commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?

LGYG commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?

AlbertZyc commented 1 year ago

稍微改造下就行了,内部对viewpager对象做一下判空就行了 `package com.flyco.tablayout

import androidx.viewpager.widget.ViewPager import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.flyco.tablayout.SlidingTabLayout import com.flyco.tablayout.listener.OnTabSelectListener

object ViewPagerHelper { @JvmStatic fun bind(slidingTabLayout: SlidingTabLayout, viewPager: ViewPager) { viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { slidingTabLayout.onPageScrolled(position, positionOffset, positionOffsetPixels) }

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

        override fun onPageScrollStateChanged(state: Int) {
            slidingTabLayout.onPageScrollStateChanged(state)
        }
    })
    slidingTabLayout.setOnTabSelectListener(object : OnTabSelectListener {
        override fun onTabSelect(position: Int) {
            viewPager.currentItem = position
        }

        override fun onTabReselect(position: Int) {
        }
    })
}

@JvmStatic
fun bind(slidingTabLayout: SlidingTabLayout, viewPager2: ViewPager2) {
    viewPager2.registerOnPageChangeCallback(object : OnPageChangeCallback() {
        override fun onPageScrolled(
            position: Int,
            positionOffset: Float,
            positionOffsetPixels: Int
        ) {
            slidingTabLayout.onPageScrolled(position, positionOffset, positionOffsetPixels)
        }

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

        override fun onPageScrollStateChanged(state: Int) {
            slidingTabLayout.onPageScrollStateChanged(state)
        }
    })
    slidingTabLayout.setOnTabSelectListener(object : OnTabSelectListener {
        override fun onTabSelect(position: Int) {
            slidingTabLayout.setCurrentTab(position, true)
            viewPager2.currentItem = position
        }

        override fun onTabReselect(position: Int) {
        }
    })
}

}`

QianHong commented 1 year ago

Viewpager太老了,能否支持一下Viewpager2?