ViewPager не отрисовывается | Kotlin
Есть TabsLayout и ViewPager. Они работают, но как-то через раз. Бывает, что отображается сразу, но иногда надо нажать на кнопку. Также бывает, что вторая из трех кнопок не работает.
Использую свой ViewPager для правильного расчета высоты:
class ExtendedViewPager : ViewPager {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
var height = 0
var heightMS = heightMeasureSpec
for (i in 0 until childCount) {
val child: View = getChildAt(i)
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED))
val h: Int = child.measuredHeight
if (h > height) height = h
}
if (height != 0) {
heightMS = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
}
super.onMeasure(widthMeasureSpec, heightMS)
}
}
Инициализарую:
tabs.addTab(tabs.newTab().setText("НЕДЕЛЯ"))
tabs.addTab(tabs.newTab().setText("МЕСЯЦ"))
tabs.addTab(tabs.newTab().setText("ГОД"))
tabs.tabGravity = TabLayout.GRAVITY_FILL
val adapter = context?.let {
fragmentManager?.let { it1 -> ViewPagerAdapter(it, it1, tabs.tabCount) }
}
tabsview.adapter = adapter
tabsview.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabs))
tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
tabsview.currentItem = tab.position
}
override fun onTabUnselected(tab: TabLayout.Tab) {}
override fun onTabReselected(tab: TabLayout.Tab) {}
})
ViewPagerAdapter:
class ViewPagerAdapter(var context: Context, fm: FragmentManager, private var totalTabs: Int) : FragmentPagerAdapter(fm) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> {
Weekly()
}
1 -> {
Month()
}
2 -> {
Year()
}
else -> getItem(position)
}
}
override fun getCount(): Int {
return totalTabs
}
}