将一个 viewpager 上的滑动设置为另一个

Make swipes on one viewpager be set to another one

我有 2 个线性布局的视图寻呼机,它们都占用相同数量的屏幕。我想这样做,如果用户在屏幕上的任何地方滑动,那么滑动应该只用于较低的 viewpager。我尝试增加触摸委托,但没有用。

好吧,你正在尝试一些迷幻的东西!我建议为第二个 viewpager 创建一个 CustomViewPager class,它可以有第一个 viewPager 的实例。

    public class CustomViewPager extends ViewPager {

    private ViewPager firstViewPager;

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

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(firstViewPager!=null){
            firstViewPager.onTouchEvent(event);
        }
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if(firstViewPager!=null){
            firstViewPager.onInterceptTouchEvent(event);
        }
        return super.onInterceptTouchEvent(event);
    }

    public void setFirstViewPager(ViewPager firstViewPager) {
        this.firstViewPager = firstViewPager;
    } 
}

在这里,您将在第二个 viewpager 的 onTouchEventonInterceptTouchEvent 中获得的运动事件传递给第一个 viewpager。您还想禁用第一个 viewpager 上的滑动功能,您可以按照 here.

中的描述进行操作