2017-07-21 6 views
2

Ich habe eine RecyclerView, die EditText als Listenelemente haben. Wenn ich die RecyclerView blättern, verliert die EditText den Fokus, wenn das Element aus dem Bildschirm geht. Der Fokus bleibt also nicht auf dem EditText, wenn er auf dem Bildschirm auf Scroll zurückkommt.EditText verliert den Fokus auf Scroll in RecyclerView

Ich möchte den Fokus auf dem gleichen Element bleiben. Dafür habe ich auch versucht, position des Objekts auf Fokus zu speichern und den Fokus in onBindViewHolder neu zuzuweisen. Aber das verlangsamt das Scrollen.

Ich habe es auch mit ListView versucht, aber es gibt eine andere Art von focus Problem. Fokus springt dort hin.

Habe diese Menge auf SO gesucht und viel gegoogelt. aber immer gefunden Antworten wie android:focusableInTouchMode="true" und android:descendantFocusability="afterDescendants", die nicht funktioniert.

Jede Hilfe würde sehr geschätzt werden.

Antwort

5

Der springende Punkt einer RecyclerView ist, die Ansichten wiederzuverwenden, so dass das Telefon nicht alle Zeilen im Speicher auf einmal behalten muss und nicht ständig Ansichten zerstören und erstellen muss. Wenn Ihr EditText den Bildschirm verlässt, nimmt das Telefon diese Ansicht, setzt seinen Inhalt zurück und verschiebt ihn an den unteren Rand des eingehenden Ansichtsstapels.

RecyclerView diagram

Das bedeutet, dass, sobald Ihr EditText den Bildschirm verlässt es nicht mehr existiert. Der Fokus kann nicht beibehalten werden, da er aus dem Layout entfernt wird.

Der einzige Weg um dies zu tun wäre das, was Sie erwähnt haben. Es speichert die Position, prüft, wann diese Position auf dem Bildschirm erscheint und stellt den Fokus manuell wieder her.

Verwandte Themen