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

标签 android gestures

我正在开发一个 Android 应用程序,它有一个带有标签布局的页面,包括 2 个选项卡、一个列表页面和一个 map (都是 fragment )。列表元素是保存图像的 viewpager,但是当用户到达 viewpager 中的最后一个图像时,tablayout 获得下一个滑动事件并切换到 map 。如果用户尝试从屏幕的最右侧开始滑动图像,也会发生这种情况。

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

这是我设置标签的方式:

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

最佳答案

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

创建一个名为 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();

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

关于android - 在 android tablayout 中禁用选项卡之间的滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530482/

相关文章:

jquery - 允许使用 jQuery.Wipetouch 进​​行捏合缩放

android - 为什么 HierarchyViewer 的 findViewById 如此缓慢?

android - Jacoco 无法读取 .ec 文件

android - 如何更新 Android 联系人公司?

android - 在 Android 应用程序中实现手势识别

android - 哪些 Android 设备/版本组合支持/不支持浏览器中的多点触控手势?

Android:检测用户是否触摸并拖出按钮区域?

ios - UIScrollView 优于 MKMapView

android - 当应用程序处于调试状态时,为什么 Gradle 在 Release模式下构建我的模块

java - 验证两个 apk 文件是否使用相同的签名