Как перетащить «вложенный нижний лист с включенной прокруткой», перетащив одного из его дочерних элементов? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть постоянный нижний лист с LinearLayout, который действует как заголовок, и SwipeRefreshLayout с NestedScrollView в нем.Я хочу иметь возможность перетаскивать нижний лист, перетаскивая этот LinearLayout, но он не работает, если вложенная прокрутка включена в корневом представлении этого нижнего листа.

Вот мой макет нижнего листа:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/list_bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:elevation="10dp"
    android:nestedScrollingEnabled="true"
    android:orientation="vertical"
    app:behavior_hideable="false"
    app:layout_behavior="AnchorSheetBehavior"> 

    <LinearLayout
        android:id="@+id/list_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:nestedScrollingEnabled="false"
        android:orientation="vertical">

        <!-- I want to be able to drag the bottom sheet by dragging this layout. -->
        <LinearLayout
            android:id="@+id/list_header_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="@dimen/layout_list_header_height"
            android:background="?selectableItemBackground"
            android:baselineAligned="false"
            android:clickable="true"
            android:focusable="true"
            android:nestedScrollingEnabled="false"
            android:orientation="horizontal">

            <!-- Some other views here. -->

        </LinearLayout>


        <!-- While the user interacting with this view, the bottom sheet should not slide. -->
        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
                android:id="@+id/swipe_to_refresh_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <androidx.core.widget.NestedScrollView
                    android:id="@+id/bottom_sheet_scroll_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/> 

            </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

    </LinearLayout>


</FrameLayout>

Чтобы дать вам общее представление:

 1. FrameLayout # root view of the bottom sheet
    2. LinearLayout # container
       3. LinearLayout # header view, I want to be able to slide the bottom sheet by dragging this view
       3. SwipeRefreshLayout # while interacting with this view, the bottom sheet should not slide
          4. NestedScrollView

Как мне добиться такого поведения?

...