0

У меня есть пейджеры с двумя представлениями в линейном макете, занимающем одинаковое количество экрана. Я хочу сделать так, чтобы, если пользователь проскакивает где-нибудь на экране, тогда салфетка должна быть только для нижнего viewpager. Я попытался увеличить делегат, но это не сработало.Сделать скрипит на одном просмотрщике на другом

+0

Если вы хотите, чтобы салфетка работала только для второго зрителя, почему у вас даже есть первый просмотрщик на месте? – Antrromet

+0

2-й просмотрщик программно проделывает 1-й просмотрщик, чтобы дать ему эффект задержки. – MikeC

ответ

1

Ну, вы пытаетесь найти какой-нибудь странный материал! Я бы предложил создать класс CustomViewPager для второго viewpager, который может иметь экземпляр первого 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-х onTouchEvent и onInterceptTouchEvent к 1-му ViewPager. Вы также хотите отключить прокрутку на первом просмотрщике, который вы можете сделать, как описано here.

+0

И поскольку вы упомянули 'touch delegate', я предполагаю, что вы с фона iOS :) Удачи с вашим Android-приложением! – Antrromet

Смежные вопросы