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));
}
});
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
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
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