Ich habe eine einzelne vertikale NestedScrollview, die eine Reihe von Recyclerview mit einem horizontalen Layoutmanager Setup enthält. Die Idee ist ähnlich wie beim neuen Google Play Store. Ich kann es funktionell machen, aber es ist überhaupt nicht glatt. Hier sind die Probleme:NestedScrollView und Horizontal RecyclerView Smooth Scrolling
1) Der horizontale Recyclerview-Artikel kann das Touch-Ereignis meistens nicht abfangen, obwohl ich direkt darauf klopfe. Die Bildlaufansicht scheint bei den meisten Bewegungen Vorrang zu haben. Es ist schwer für mich, einen Haken in die horizontale Bewegung zu bekommen. Dieses UX ist frustrierend, da ich es einige Male versuchen muss, bevor es funktioniert. Wenn Sie den Play Store überprüfen, ist es in der Lage, das Touch-Event wirklich gut abzufangen und es funktioniert einfach gut. Ich bemerkte im Play Store, wie sie es einrichten, ist viele horizontale Recyclerviews in einem vertikalen Recyclerview. Kein scrollview.
2) Die Höhe der horizontalen RecyclerViews muss manuell festgelegt werden und es gibt keine einfache Möglichkeit, die Höhe der Kinderelemente zu berechnen.
Hier ist das Layout Ich verwende:
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:background="@color/dark_bgd"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/main_content_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
tools:visibility="gone"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/starring_list"
android:paddingLeft="@dimen/spacing_major"
android:paddingRight="@dimen/spacing_major"
android:layout_width="match_parent"
android:layout_height="180dp" />
Dieses UI-Muster ist sehr einfach und sehr wahrscheinlich in vielen verschiedenen Anwendungen eingesetzt. Ich habe viele SO's gelesen, wo ppl sagen, dass es eine schlechte Idee ist, eine Liste innerhalb einer Liste zu setzen, aber es ist ein sehr häufiges und modernes UI-Muster, das überall verwendet wird. Denken Sie an Netflix-ähnliche Schnittstelle mit einer Reihe von horizontalen Scroll-Listen eine vertikale Liste. Gibt es dafür keinen reibungslosen Weg?
Beispielbild aus dem Speicher:
Seltsame Sache ist, dass ich das umgekehrte Problem habe: Ich möchte die NestedScrollView, um vertikal zu scrollen, aber die horizontale RecyclerView nimmt die Berührungsereignisse so, wenn ich das vertikale Scrollen darauf starten, erlaubt es nicht. Auch, wenn Sie nur ein paar Elemente haben, können Sie eine einfache HorizontalScrollView mit LinearLayout verwenden. –