webentwicklung-frage-antwort-db.com.de

Bildlaufverhalten in verschachtelten RecyclerView mit horizontalem Bildlauf

Ich muss vertikale RecyclerView mit verschachtelten horizontalen RecyclerView in jedem Element erstellen. Alles ist in CoordinatorLayout. Beim Scrollen durch Tippen außerhalb der verschachtelten RecyclerView-Symbolleiste wird ausgeblendet, beim Scrollen des übergeordneten Recycler durch Tippen auf verschachtelte Symbolleiste bleibt jedoch eine Symbolleiste erhalten. 

Jede Hilfe wäre dankbar.

Hier sind meine XML-Layouts:

main_activity.xml:

<Android.support.design.widget.CoordinatorLayout 
   ...>

<FrameLayout
    Android:id="@+id/fragment_frame"
    ...
    Android:fitsSystemWindows="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<Android.support.design.widget.AppBarLayout
    ...
    Android:fitsSystemWindows="true"
    Android:id="@+id/appbar_layout">

        <include layout="@layout/toolbar"/>

</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>

Hier ist toolbar.xml:

<Android.support.v7.widget.Toolbar
    Android:id="@+id/main_toolbar"
    ...
    Android:fitsSystemWindows="true"
    app:layout_scrollFlags="scroll|enterAlways">

    <TextView .../>

</Android.support.v7.widget.Toolbar>

fragment.xml:

<Android.support.v7.widget.RecyclerView
    ...
    Android:scrollbars="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

Und recycler_view_item.xml:

<RelativeLayout ...>

    <TextView .../>

    <!-- fixme(CullyCross) fix bug with hiding toolbar -->
    <Android.support.v7.widget.RecyclerView
        ...
        Android:scrollbars="horizontal"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />

</RelativeLayout>

Vielen Dank,
Anton

25
Anton Shkurenko

Wie gefordert ist hier die Lösung, die ich bisher gut genug gefunden habe:

In meinem Fall habe ich eine nestedScrollView mit 4 RecyclerViews, um horizontal nach innen zu scrollen. Für jeden dieser RecyclerViews habe ich das programmatisch gemacht: 

restaurantsRecylerView.setHasFixedSize(true); 
restaurantsRecylerView.setNestedScrollingEnabled(false);

Wahrscheinlich möchten Sie das fixedSize nicht, Sie sind sich nicht sicher, ob es einen Unterschied macht. Meine Liste ist immer 25, damit ich sie für die Leistung nutzen kann. Danach kann ich problemlos scrollen, auch wenn ich auf die RecyclerViews tippe

Ich hoffe es hilft

51
Lancelot

Versuchen Sie es mit RecyclerView in Android.support.v4.widget.NestedScrollView .

<Android.support.v4.widget.NestedScrollView
        Android:id="@+id/nScrollView"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

<!-- Set other views of your Layout -->

</Android.support.v4.widget.NestedScrollView>

Versuchen Sie es auch mit anderen layout_scrollFlags in Toolbar und 

RecylerView.setNestedScrollingEnabled(false); // set it true or false as per requirement
20
Priyank Patel

Wir können dies in XML erreichen

Android:nestedScrollingEnabled="false"
0