forked from microsoft/fluentui-android
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTabLayoutActivity.kt
131 lines (110 loc) · 4.42 KB
/
TabLayoutActivity.kt
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
package com.microsoft.fluentuidemo.demos
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.viewpager.widget.PagerAdapter
import com.microsoft.fluentui.tablayout.TabLayout
import com.microsoft.fluentui.tablayout.TabLayout.TabType.*
import com.microsoft.fluentuidemo.DemoActivity
import com.microsoft.fluentuidemo.R
import com.microsoft.fluentuidemo.databinding.ActivityTabLayoutBinding
class TabLayoutActivity : DemoActivity() {
private var adapter: TabPagerAdapter? = null
private lateinit var tabLayout: com.google.android.material.tabs.TabLayout
private lateinit var tabLayoutBinding: ActivityTabLayoutBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
tabLayoutBinding = ActivityTabLayoutBinding.inflate(
LayoutInflater.from(container.context),
container,
true
)
tabLayout = tabLayoutBinding.demoTabLayout.tabLayout ?: return
adapter = TabPagerAdapter()
adapter?.setData(createPageList())
adapter?.setTitle(createPageTitleList())
tabLayoutBinding.viewPager.adapter = adapter
tabLayoutBinding.showTabStandardTwoSegment.setOnClickListener(this::clickListener)
tabLayoutBinding.showTabStandardThreeSegment.setOnClickListener(this::clickListener)
tabLayoutBinding.showTabStandardFourSegment.setOnClickListener(this::clickListener)
tabLayoutBinding.showTabStandardWithPager.setOnClickListener(this::clickListener)
tabLayoutBinding.showTabSwitch.setOnClickListener(this::clickListener)
tabLayoutBinding.showTabPills.setOnClickListener(this::clickListener)
}
private fun clickListener(v: View) {
tabLayoutBinding.demoTabLayout.visibility = View.VISIBLE
tabLayout.removeAllTabs()
tabLayout.setupWithViewPager(null)
var tabType: TabLayout.TabType = STANDARD
when (v.id) {
R.id.show_tab_standard_two_segment -> {
setTabs(2)
}
R.id.show_tab_standard_three_segment -> {
setTabs(3)
}
R.id.show_tab_standard_four_segment -> {
setTabs(4)
}
R.id.show_tab_switch -> {
setTabs(2)
tabType = SWITCH
}
R.id.show_tab_pills -> {
setTabs(6)
tabType = PILLS
}
R.id.show_tab_standard_with_pager -> {
tabLayout.setupWithViewPager(tabLayoutBinding.viewPager)
}
}
tabLayoutBinding.demoTabLayout.tabType = tabType
}
private fun setTabs(numTabs: Int) {
for (i in 0 until numTabs) {
tabLayout.addTab(tabLayout.newTab().setText("Label " + (i + 1)))
}
}
private fun createPageTitleList(): List<String> {
return listOf("Page 1", "Page 2", "Page 3")
}
private fun createPageList(): List<View> {
return listOf(
createPageView(R.color.fluentui_communication_tint_40),
createPageView(R.color.fluentui_communication_tint_30),
createPageView(R.color.fluentui_communication_tint_20)
)
}
private fun createPageView(color: Int): View {
val view = View(this)
view.setBackgroundColor(ContextCompat.getColor(this, color))
return view
}
class TabPagerAdapter : PagerAdapter() {
private var viewList: List<View> = ArrayList()
private var viewTitleList: List<String> = ArrayList()
override fun instantiateItem(collection: ViewGroup, position: Int): Any {
val view = viewList[position]
collection.addView(view)
return view
}
override fun destroyItem(collection: ViewGroup, position: Int, view: Any) {
collection.removeView(view as View)
}
override fun isViewFromObject(view: View, obj: Any): Boolean = view === obj
override fun getCount(): Int = viewList.size
override fun getPageTitle(position: Int): CharSequence? = viewTitleList[position]
fun setData(list: List<View>) {
viewList = list
}
fun setTitle(list: List<String>) {
viewTitleList = list
}
}
}