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.
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:
NestedScrollView
ist kein Kind von ScrollView
, sondern von FrameLayout
.