0

Ich habe einen ViewPager, der durch E-Mails scrollt, es fordert eine E-Mail, wenn der Benutzer für einen kurzen Zeitraum mit einem Scheduler Scrollen stoppt.Disable nur tippen auf ViewPager

Während dieser Pause möchte ich nicht, dass auf die Platzhalterschaltflächen, die sich auf der Seite befinden, geklickt wird. Während dieses Paging-Ereignisses würde ich daher gerne Wischen erlauben, da der Benutzer weiterhin zu einer anderen E-Mail wischen kann, aber das Tappen auf Sender/Empfänger oder interaktive Elemente innerhalb der E-Mail, die immer noch Platzhalter sind, nicht führt.

Ich habe versucht, so etwas wie dies bisher auf der Ansicht, Pager zu tun:

// Set a simple gesture to handle our click request, allowing everything else 
final GestureDetector.SimpleOnGestureListener dsl_simpleDetector = new GestureDetector.SimpleOnGestureListener() { 
    public boolean onSingleTapUp (MotionEvent motionEvent) { 
     // Don't want to do anything with this if timer is running 
     final ExchangeEmailActivity ds_act = (ExchangeEmailActivity) getActivity(); 
     if (ds_act.dsc_timer != null) { // We're waiting for the page to load still 
      return false; // Handle it by doing nothing 
     } else { 
      return true; // Let it be handled as necessary 
     } 
    } 
}; 

// The listener will call the simple gesture above to handle it 
vp_pager.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     return (dsl_simpleDetector.onSingleTapUp(motionEvent)); 
    } 
}); 

Antwort

0

wenn Sie nicht wollen, die Benutzer auf einen Knopf klicken ->deaktivieren Sie die Schaltfläche. Es ist ein schlechter Entwurf, den Touch-Listener zu "hacken", um zu verhindern, dass ein Benutzer auf Schaltflächen klickt.

+0

Es ist nicht praktikabel, mit den Schaltflächen selbst zu interagieren, sie sind Teil eines breiteren Systems, Hacking wäre viel schlechteres Design. Der ViewPager ist das flachste System von allen, und die Funktionalität sollte nur für diesen bestimmten ViewPager gelten. – Ben

+0

Es kann vorkommen, dass der ViewPager das flachste System ist. ABER Sie müssen es aus der Benutzeransicht sehen. Wenn in Ihrer App Schaltflächen aktiviert sind (auf die Sie nicht klicken können), versucht ein Benutzer, sie früher oder später anzuklicken, und es passiert nichts. Und das sollte nie passieren. – IIIIIIIIIIIIIIIIIIIIII

+0

In diesem Fall scheint es akzeptabel, dies zu tun, da diese Deaktivierungsfunktion nur etwa 200 Millisekunden dauern sollte. Eine Toast-Nachricht könnte beim Abfangen dieser Funktionalität bereitgestellt werden, wenn der ViewPager den Benutzer darauf hinweist, den Ladevorgang abzuwarten. – Ben

Verwandte Themen