I umgesetzt ClearableEdittext und es funktioniert perfekt, außer auf 4.3, wo die logcat flutet mich mit:ClearableEditText - requestLayout() nicht richtig auf Android 4.3 genannt
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F...... 0,0-708,88 #7f050127 app:id/SearchEdittext} during second layout pass: posting in next frame
und wenn sie in der EditText kein Text auftaucht eingeben. Nachdem das Logcat gestartet wurde, wird die Benutzeroberfläche außer der Soft-Tastatur eingefroren.
Finden Sie keine Informationen dazu im Internetz. Und requestLayout()
muss innerhalb Edittext/Textview-Klasse aufgerufen werden, weil ich es nie aufrufen. Weiß jemand von Ihnen, wie man das behebt oder was den Fehler verursacht?
EDIT1 OK, so dass das Problem verschwindet, wenn ich die Zeile aus kommentieren:
setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]);
Ich habe versucht, dies als runnable der Ansicht der UI-Warteschlange Posting aber kein Text auftaucht.
EDIT2 Ich habe this video eines Android Developer gesehen zu erklären, dass etwas rekursive während onLayout
passiert, aber noch einmal, ich nur EditText
Unterklasse.
EDIT3 Ich habe auch versucht, die Verbindung ziehbar verwirft und andere ImageView
auf dem EditText
verwenden, aber es hat etwas mit dem Layout zu tun passiert, wenn etwas auf dem Edittext
Zeichnung ich der rekursive Aufruf glauben ... ist passiert immer noch und blockiert die Benutzeroberfläche. Ich weiß nicht, was ich als nächstes ... versuchen soll. 4.3 sx
EDIT4 Ich endete mit einem linearen Layout mit horizontaler Ausrichtung und benutzerdefinierten 9 Patch-Zeichen für den Hintergrund der Komponenten. Im Layout habe ich einen normalen edittext mit meinem eigenen 9patch Bg und dann einen ImageButton mit einem anderen benutzerdefinierten 9patch Bg.
Etwas wie folgt aus:
Die rote Linie begrenzt den EditText vom Image. Es funktioniert jetzt auf 4.3
das könnte funktionieren, nur die Schaltfläche wird immer angezeigt, nachdem Text eingegeben wurde. Nun, ich denke, wir können eine if-Klausel im onFocusChange für Version 4.3 platzieren. vielleicht wird dies mit der Zeit auf der Android-Seite behoben werden – androidu