如何禁用 FragmentStatePagerAdapter 上的滑动?
How do I disable swiping on FragmentStatePagerAdapter?
我正在学习使用带 FragmentStatePagerAdapter
的 TabLayout 的教程 here。一切都很好,除了我需要禁用我的第二个选项卡上的滑动,因为它使用水平滚动。如果所有选项卡都禁用滚动也没关系,但如果只为第二个选项卡禁用它会很棒。
对于 ViewPager,我似乎会覆盖 onInterceptTouchEvent()
方法,但这似乎不是 FragmentStatePagerAdapter
的选项。关于如何做到这一点的任何想法?谢谢
编辑:我只有两个片段,所以如果 FragmentStatePagerAdapter 不合适,我愿意接受建议。
编辑2:刷不上的问题已经解决。但是,我仍然想知道如何防止仅滑动第二个片段。
修改 onInterceptTouchEvent
和 onTouchEvent
以仅排除您想要的选项卡索引:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch(getCurrentItem()){
case 1:
return false;
default:
return super.onInterceptTouchEvent(event);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(getCurrentItem()){
case 1:
return false;
default:
return super.onTouchEvent(event);
}
}
我正在学习使用带 FragmentStatePagerAdapter
的 TabLayout 的教程 here。一切都很好,除了我需要禁用我的第二个选项卡上的滑动,因为它使用水平滚动。如果所有选项卡都禁用滚动也没关系,但如果只为第二个选项卡禁用它会很棒。
对于 ViewPager,我似乎会覆盖 onInterceptTouchEvent()
方法,但这似乎不是 FragmentStatePagerAdapter
的选项。关于如何做到这一点的任何想法?谢谢
编辑:我只有两个片段,所以如果 FragmentStatePagerAdapter 不合适,我愿意接受建议。
编辑2:刷不上的问题已经解决。但是,我仍然想知道如何防止仅滑动第二个片段。
修改 onInterceptTouchEvent
和 onTouchEvent
以仅排除您想要的选项卡索引:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch(getCurrentItem()){
case 1:
return false;
default:
return super.onInterceptTouchEvent(event);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(getCurrentItem()){
case 1:
return false;
default:
return super.onTouchEvent(event);
}
}