it-swarm.com.ru

Поведение прокрутки во вложенном RecyclerView с горизонтальной прокруткой

Я должен создать вертикальный RecyclerView с вложенным горизонтальным RecyclerView в каждом элементе. Все в пределах CoordinatorLayout. Когда я прокручиваю, нажимая за пределы вложенной панели инструментов RecyclerView, она скрывается, но когда я прокручиваю родительский Recycler, нажимая на вложенную панель инструментов, остается одна. 

Любая помощь будет оценена.

Вот мои макеты XML:

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>

Вот 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"/>

И 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>

Спасибо,
Антон

25
Anton Shkurenko

Как и просили, вот решение, которое я нашел достаточно хорошим:

В моем случае у меня есть nestedScrollView с 4 RecyclerViews для горизонтальной прокрутки внутри. Для каждого из этих RecyclerViews я сделал это программно: 

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

Возможно, вы не хотите использовать fixedSize, но не уверены, что это что-то изменит, мой список всегда 25, поэтому я могу использовать его для повышения производительности. Сделав это, я могу без проблем прокручивать, даже когда я касаюсь реселлера.

Надеюсь, поможет

51
Lancelot

Попробуйте с RecyclerView внутри 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>

Также попробуйте с другими layout_scrollFlags в Toolbar и 

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

Мы можем добиться этого в XML

Android:nestedScrollingEnabled="false"
0
pratham kesarkar