Android嵌套ViewPager禁用触摸事件

标签 android android-fragments android-viewpager android-view

在我的应用程序中,我有一个 ViewPager。在其中一个页面中,我有另一个 ViewPager,其中我通过自定义 ViewPager 实现禁用了滑动手势:

public class NonSwipeableViewPager extends ViewPager {

    public NonSwipeableViewPager(Context context) {
        super(context);
    }

    public NonSwipeableViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Never allow swiping to switch between pages
        return false;
    }
}

这很好用;子 ViewPager 中的滑动手势被禁用。但是,除非从屏幕的最边缘开始滑动,否则无法滑动父 ViewPager。如何让子 ViewPager 忽略所有触摸事件/将它们传递给父 View ?

最佳答案

原来答案很简单!

public class NonSwipeableViewPager extends ViewPager {

    public NonSwipeableViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);

    }

    @Override
    public boolean canScrollHorizontally(int direction) {
        return false;
    }

} 

关于Android嵌套ViewPager禁用触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034866/

相关文章:

java - 将 EditText 中的文本向右移动

android - Xamarin Forms 自定义字体不适用于 UWP(适用于 Android)

java - 必需的 android.app.Fragment

Android ViewPager 适配器 - 每次都强制 getPageWidth

android - 使用新内容 : 刷新 ViewPager 的奇怪问题

Android:在 ViewPager 中更改文本

android - 将 "select"组合框设置为固定大小

android - 无法将不同国家/地区的应用程序名称和包名称相同的应用程序上传到 Android 市场

java - Android Fragment中如何中断线程?

android - 如何在屏幕旋转时保留 View Pager 的 fragment ?