So verhindern Sie einen schnellen Doppelklick auf eine Schaltfläche

8

Ich habe mir die Antworten hier angesehen - Android verhindert Doppelklick auf eine Schaltfläche und implementiert qezt's Lösung wie und ich habe setEnabled(false) like so versucht -

%Vor%

Keine dieser Funktionen funktioniert gegen super schnelle Doppelklicks.

Hinweis - Ich setze doneButton.setEnabled(true) nicht, nachdem meine Verarbeitung abgeschlossen ist. Ich beende einfach () die Aktivität, so dass es keinen Fehler gibt, dass die Schaltfläche zu früh aktiviert wird.

    
Mallika 28.09.2015, 09:18
quelle

8 Antworten

9

Ich mache das so, es funktioniert sehr gut.

%Vor%     
Suru 28.09.2015, 09:26
quelle
5

Ich verwende eine Funktion wie diese im Listener einer Schaltfläche:

%Vor%     
Jean-baptiste Valero 28.09.2015 09:32
quelle
3

Wahrscheinlich nicht sehr effizient, aber minimal invers:

%Vor%     
user1145201 31.08.2016 18:09
quelle
1

Surus Antwort hat gut für mich funktioniert, danke!

Ich möchte die folgende Antwort für jeden hinzufügen, der Ссылка und steht vor diesem Problem -

app:mrl_rippleDelayClick ist standardmäßig wahr. Dies bedeutet, dass onClick erst ausgeführt wird, wenn das Ripple beendet ist. Daher wird setEnabled(false) in onClick nach einer Verzögerung ausgeführt, da die Ripple nicht ausgeführt wird und in diesem Zeitraum können Sie auf die Ansicht doppelklicken.

Setze app:mrl_rippleDelayClick="false" , um das zu beheben. Das bedeutet, dass der Aufruf von onClick erfolgt, sobald auf die Ansicht geklickt wird, anstatt darauf zu warten, dass die Ripple nicht mehr angezeigt wird.

    
Mallika 28.09.2015 10:45
quelle
0

versuchen Sie, yourbutton.setClickable (false) zu setzen so:

%Vor%     
Sarah Maher 28.09.2015 09:29
quelle
0

Qezt Lösung ist schon in Ordnung. Wenn Sie jedoch einen superschnellen Doppelklick verhindern möchten, reduzieren Sie einfach die Schwelle

%Vor%     
Fadils 28.09.2015 09:42
quelle
0
%Vor%

Ich habe die obige Methode in einer statischen Datei beibehalten und werde diese Methode für den gesamten Buttonklick wie folgt aufrufen

%Vor%     
Vignesh KM 01.08.2017 12:24
quelle
0

Sie können diese Methode verwenden. Mit post-delay können Sie auf Doppelklick-Ereignisse achten.

void debunceEffectForClick (Ansicht anzeigen) {

%Vor%

}

    
manmohan 16.01.2018 07:25
quelle

Tags und Links