ClearableEditText - requestLayout () wurde auf Android 4.3 nicht ordnungsgemäß aufgerufen

8

Ich habe ClearableEdittext implementiert und es funktioniert einwandfrei außer auf 4.3, wo die Logcat mich überschwemmt:

%Vor%

und beim Eintippen des Edittext wird kein Text angezeigt. Nachdem die Logcat gestartet wurde, wird die Benutzeroberfläche außer der Soft-Tastatur eingefroren.

Ich kann keine Informationen dazu im Internet finden. Und requestLayout() muss innerhalb der Edittext / Textview-Klasse aufgerufen werden, da ich sie nie aufrufen werde. Weiß jemand von Ihnen, wie man das behebt oder was den Fehler verursacht?

EDIT1 OK, das Problem verschwindet, wenn ich die Zeile auskommentiere:

%Vor%

Ich habe versucht, dies als ausführbar in die UI-Warteschlange der Ansicht zu posten, aber es wird kein Text angezeigt.

EDIT2 Ich habe dieses Video eines Android-Entwicklers gesehen, der erklärt, dass etwas rekursiv ist passiert während onLayout , aber noch einmal, ich Unterklasse EditText .

EDIT3 Ich habe auch versucht, die Compound-Drawable zu verwerfen und ein weiteres ImageView über dem EditText zu verwenden, aber es hat etwas damit zu tun, dass das Layout beim Zeichnen von etwas über% co_de geht % Ich glaube ... der rekursive Aufruf findet immer noch statt und blockiert die Benutzeroberfläche. Ich weiß nicht, was ich als nächstes versuchen soll ... 4.3 sux

EDIT4 Ich verwendete ein lineares Layout mit horizontaler Ausrichtung und benutzerdefinierten 9 Patch-Zeichen für den Hintergrund der Komponenten. Im Layout habe ich einen normalen editiertext mit meinem benutzerdefinierten 9patch Bg und dann einen ImageButton mit einem anderen benutzerdefinierten 9patch Bg.

In etwa so:

Die rote Linie begrenzt den Editiertext vom ImageButton. Es funktioniert jetzt auf 4.3

    
androidu 22.08.2013, 14:15
quelle

3 Antworten

1

Ein bisschen späte Antwort, aber ich hatte gerade ein verwandtes Problem mit der ClearableEditText Komponente.

Es scheint, dass aufgrund der Änderung von combineddrawables in setClearIconVisible () eine ewige Schleife von onfocus Ereignissen ausgelöst wird.

Ich habe das setClearIconVisible geändert, um nur das Zeichen zu ändern, wenn es echte Änderungen gibt.

%Vor%

Das hat mein Problem behoben, dass die Tastatur nicht mehr erscheint. Eine ewige Schleife von onfocus-Events wird niemandem etwas nützen. Es fügt noch eine weitere Runde von Layout und FocusedChanged hinzu, so dass es eine cleverere Lösung dafür geben könnte. Mir geht es gut mit einer zusätzlichen Runde, tho.

Ich habe auch eine Pull-Anfrage an den Entwickler geschickt, Ссылка .

    
Kenneth 06.02.2015, 06:56
quelle
1

probiere die Methode onFocusChange aus. Es hilft für mich

    
Nick 06.09.2013 16:12
quelle
1

Am Ende habe ich zwei separate Ansichten für edittext und clear btn verwendet, siehe meine bearbeitete Frage.

    
androidu 09.10.2013 11:31
quelle