Я использую TabLayout
, чтобы показать значок и название разных вкладок.С TabLayout
я использую ViewPager
, чтобы добавить Fragments
для каждой вкладки.TabLayout
с интерактивными вкладками (и они расположены по центру при нажатии) работает, но я хочу реализовать ту же функциональность, что и RecyclerView
SnapHelper
.Если я прокручиваю вкладки TabLayout
, он привязывает вид к центру экрана и выбирает его.Это должно показать Fragment
под TabLayout
.
Есть ли способ, как это сделать?
Это мой пользовательский TabLayout, который будет отображать щелчок по центру.
class CenteredTabLayout : TabLayout {
constructor(context: Context) : super(context) {}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
super.onLayout(changed, l, t, r, b)
val firstTab = (getChildAt(0) as ViewGroup).getChildAt(0)
val lastTab = (getChildAt(0) as ViewGroup).getChildAt((getChildAt(0) as ViewGroup).childCount - 1)
if (firstTab != null && lastTab != null){
ViewCompat.setPaddingRelative(getChildAt(0), width / 2 - firstTab.width / 2, 0, width / 2 - lastTab.width / 2, 0)
}
}
}