package cn.flightfeather.thirdappmodule.module.base
|
|
import android.support.design.widget.TabLayout
|
import android.support.v4.app.Fragment
|
import android.support.v4.app.FragmentManager
|
import android.support.v4.view.ViewCompat
|
import android.support.v4.view.ViewPager
|
|
/**
|
* @author riku
|
* Date: 2019/5/17
|
* tabLayout和viewPager设置接口
|
*/
|
interface TabViewPagerSetInterface {
|
|
fun initTab(){
|
getTab().apply {
|
tabMode = getMyTabMode()
|
ViewCompat.setElevation(this, getMyTabElevation())
|
tabGravity = getMyTabGravity()
|
setSelectedTabIndicatorGravity(getMyTabIndicatorGravity())
|
if (getMyTabTextNormalColor() != -1 && getMyTabTextSelectedColor() != -1) {
|
setTabTextColors(getMyTabTextNormalColor(), getMyTabTextSelectedColor())
|
setSelectedTabIndicatorColor(getMyTabTextSelectedColor())
|
}
|
}.setupWithViewPager(getViewPager())
|
}
|
|
fun initViewPager(){
|
getViewPager().apply {
|
adapter = FragmentViewPagerAdapter(
|
getMyFragmentManager(),
|
getTabFragments(),
|
getTitles()
|
)
|
//viewpager预加载数
|
offscreenPageLimit = getMyOffScreenPageLimit()
|
//默认展示页
|
if (getTab().tabCount > 1) {
|
currentItem = getDefaultFirstItem()
|
}
|
}
|
}
|
|
fun getMyTabMode(): Int = TabLayout.MODE_FIXED
|
|
fun getMyTabTextNormalColor(): Int = -1
|
|
fun getMyTabTextSelectedColor(): Int = -1
|
|
fun getMyTabElevation(): Float = 1f
|
|
fun getMyTabGravity(): Int = TabLayout.GRAVITY_CENTER
|
|
fun getMyTabIndicatorGravity(): Int = TabLayout.INDICATOR_GRAVITY_BOTTOM
|
|
fun getMyOffScreenPageLimit(): Int = 3
|
|
fun getDefaultFirstItem(): Int = 0
|
|
fun getTab(): TabLayout
|
|
fun getViewPager(): ViewPager
|
|
fun getTitles(): List<String>
|
|
fun notifyTabChanged(){
|
//解决tab绑定徽章后点击切换时字体颜色不变化的问题
|
getTab().apply {
|
getTabAt(selectedTabPosition)?.select()
|
}
|
}
|
|
fun getTabFragments(): List<Fragment>
|
|
fun getMyFragmentManager(): FragmentManager
|
|
}
|