1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package cn.flightfeather.thirdapp.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
 
}