【发布时间】:2018-10-06 12:49:00
【问题描述】:
我使用TabLayout 来显示不同标签的图标和名称。使用TabLayout,我使用ViewPager 为每个选项卡添加Fragments。 TabLayout 带有可点击的标签(并且它们在点击时居中)正在工作,但我想实现与 RecyclerView SnapHelper 相同的功能。如果我滚动TabLayout 选项卡,它会将视图捕捉到屏幕中心并选择它。这应该在TabLayout 下显示Fragment。
有什么办法吗?
这是我的自定义 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)
}
}
}
【问题讨论】:
标签: android android-fragments android-viewpager android-tablayout