Android 如何为TabLayout设置捕捉行为
我正在使用Android 如何为TabLayout设置捕捉行为,android,android-fragments,android-viewpager,android-tablayout,Android,Android Fragments,Android Viewpager,Android Tablayout,我正在使用TabLayout显示不同选项卡的图标和名称。使用TabLayout我使用ViewPager为每个选项卡添加片段带有可单击选项卡的TabLayout(它们在单击时居中)正在工作,但我希望实现与回收视图SnapHelper相同的功能。如果我滚动TabLayout选项卡,它会将视图捕捉到屏幕中央并选择它。这应该在表格布局下显示片段 有办法吗 这是我的自定义表格布局,它将在视图中间单击鼠标中键 class CenteredTabLayout : TabLayout { constru
TabLayout
显示不同选项卡的图标和名称。使用TabLayout
我使用ViewPager
为每个选项卡添加片段<代码>带有可单击选项卡的TabLayout
(它们在单击时居中)正在工作,但我希望实现与回收视图
SnapHelper
相同的功能。如果我滚动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)
}
}
}
tl;如果使用默认的表格布局,则无法修改捕捉效果。因为计算其移动距离的方法是私有的,无法替换
我也想用我的TabLayout做一些定制的快照。最终我放弃了,为标签创建了自己的RecyclerView和适配器。我不需要TabLayout(创建我的自定义指示器)提供的指示器。所以我所要做的就是使用我的适配器实现ViewPager.OnPageChangeListener
同时,阅读其他源代码如何使滚动真正帮助了我
比如说,