禁用在android tablayout中的选项卡之间滑动

时间:2015-12-30 13:27:32

标签: android gestures

我正在开发一个Android应用程序,该应用程序的页面包含一个tablayout,包括2个选项卡,一个列表页面和一个地图(两个都是片段)。列表元素是包含图像的视图,但是当用户到达viewpager中的最后一个图像时,tablayout将获得下一个滑动事件并切换到地图。如果用户尝试从屏幕的最右侧开始滑动图像,也会发生这种情况。

我想完全切换选项卡之间的滑动功能,但是没有找到方法这样做。

这是我设置标签的方式:

ViewPager fragmentPager = (ViewPager) findViewById(R.id.viewpager);
fragmentPager.setAdapter(new MyPagerAdapter);//extends FragmentPagerAdapter
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(fragmentPager);

1 个答案:

答案 0 :(得分:0)

您可以使用自定义视图寻呼机执行此操作。

创建一个名为Custom_viewpager的类,并将其扩展到XML中。

public class Custom_viewpager extends ViewPager {

private boolean enabled;

public Custom_viewpager(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.enabled = true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    return enabled ? super.onTouchEvent(event) : false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    return enabled ? super.onInterceptTouchEvent(event) : false;
}

public void setPagingEnabled(boolean enabled) {
    this.enabled = enabled;
}

public boolean isPagingEnabled() {
    return enabled;
}

如果要禁用滑动,只需添加以下两行。

viewPager.setPagingEnabled(false);
viewPager.beginFakeDrag();

如果有帮助,请告诉我。 :)