mit onClick auf TextView mit auswählbarem Text - Wie Doppelklick vermeiden?

9

Das ist so seltsam, aber wenn Sie einen onClickListener auf einen TextView (oder nicht editierbaren EditText) setzen, der android:textIsSelectable="true" hat - braucht es nicht einen Tipp, sondern zwei. Ich habe es auf 3 Handys überprüft und alle führen onClick nur nach dem zweiten Antippen aus.

Natürlich, wenn Sie focusable="false" oder android:textIsSelectable="false" machen, funktioniert es ab dem ersten Tippen, aber die Textauswahl funktioniert nicht.

Bitte, helfen Sie mir bei diesem Problem

    
Vlad Alexeev 26.03.2014, 06:56
quelle

4 Antworten

0

Ich hatte das gleiche Problem und es ist schwer zu fragen und nach einer Lösung zu suchen.

Hier sind zwei Dinge, die ich neben dem Doppeltipp-Verhalten bemerkt habe:

  • Wenn Sie doppelt auf ein TextView mit textIsSelectable tippen, wird das Wort, das Sie angetippt haben, ausgewählt, auch wenn der Fokus auf etwas anderem liegt, was bedeutet, dass die Ansicht auch die erste Berührung registriert hat.
  • Wenn Sie lange tippen, während der Fokus irgendwo anders ist, funktioniert es und startet den Auswahlaktionsmodus, als ob er bereits auf
  • fokussiert wäre

So habe ich es geschafft, es zum Laufen zu bringen. Es ist nicht schön, aber alles funktioniert soweit: In der XML-Datei müssen Sie nur textIsSelectable hinzufügen, keine anderen focusable / focusableInTouchMode / clickable / enabled Attribute benötigt; Dann brauchen Sie zwei Listener, eine ist die existierende onClick welche funktioniert, benötigt aber eine Doppelaufnahme und die andere ist eine onFocusChange , wo Sie die außergewöhnliche erste Berührung handhaben:

%Vor%

Hier ist eine alternative Lösung in einer verwandten Frage, die ich nicht mag und nicht einmal versucht habe: wrap die TextView in einem FrameLayout und fügen Sie den Listener dazu hinzu.

Hier ist eine weitere verwandte Frage , die mehr Lösungen bietet.

    
TWiStErRob 11.05.2015 10:11
quelle
0

Setzen Sie in XML auf Ihre TextView

%Vor%

Danach setzen Sie auf TouchListener zu Ihrem TextView und in ihnen tun dies:

%Vor%

Es ist Fokus für jeden Tipp auf TextView gesetzt. Schließlich setzen Sie onClickListener auf Ihre TextView.

Ich habe das gleiche Problem mit einem Halter für meinen benutzerdefinierten RecyclerView.Adapter. Also, ich schneide es für Sie, wenn Sie brauchen:

%Vor%     
Serjant.arbuz 22.07.2017 22:33
quelle
-1
%Vor%

Deaktivieren Sie die Schaltfläche mit setEnabled(false) , bis es für den Benutzer sicher ist, es erneut anzuklicken.

Kann dies für Sie hilfreich sein

    
Android 26.03.2014 07:05
quelle
-2

Versuchen Sie es.

Verwenden Sie in der XML-Datei

%Vor%

oder

%Vor%     
Sethu 26.03.2014 07:33
quelle