RecyclerView in ScrollView, einige Elemente werden nicht angezeigt

8

Ich hatte eine RecyclerView in ScrollView wie folgt:

%Vor%

Und der RecyclerView -Eintrag ist ein RelativeLayout , in dem ein EditText und andere Sichten enthalten sind. Die layout_height dieser RelativeLayout und EditText sind beide wrap_content . Der Benutzer kann in dieses EditText ohne Begrenzung der Länge / Zeilen eingeben, so dass die Höhe jedes Elements unterschiedlich ist.

Dann habe ich festgestellt, dass getItemCount() in Adapter den wahren Wert zurückgibt, aber onBindViewHolder() wird von falschen Zeiten aufgerufen (weniger als es sein sollte), also nicht genug um alle Elemente anzuzeigen.

Ich habe festgestellt, dass dies nur passieren wird, wenn ich recyclerView.setNestedScrollingEnabled(false) geschrieben habe. Aber ich kann diese Zeile nicht entfernen. Denn wenn ich dies getan habe, wird der RecyclerView nicht reibungslos durchlaufen und ist nicht mit anderen Ansichten in ScrollView und ScrollView selbst harmonisch.

Dies tritt bei 6.0 aber nicht bei 4.1 auf.

Ich habe auf dieser Seite mit Google kommuniziert: Ссылка und er hat mir gesagt, dass dies so ist ein Bugfix für RecyclerView . Sie können diese Seite besuchen, so dass Sie die Frage und mein Ziel besser verstehen können (Es gibt ein kleines Beispielprojekt, um das Problem dort zu zeigen). Ich stimme ihm auch jetzt nicht zu und ich möchte das Problem lösen. Bitte helfen Sie, danke im Voraus.

    
ywwynm 28.06.2016, 11:26
quelle

1 Antwort

43

Ich habe die Lösung selbst gefunden: Ersetze ScrollView durch NestedScrollView und behalte recyclerView.setNestedScrollingEnabled(false) bei. Ich weiß nicht, ob das für NestedScrollView gemacht wird, aber es funktioniert.

HINWEIS:

  1. NestedScrollView ist kein Kind von ScrollView , sondern von FrameLayout .
  2. Diese Lösung bringt auch einige Fehler mit selbst-simuliertem% ​​co_de%.
ywwynm 29.06.2016, 01:36
quelle