仅允许一个能够滚动 CoordinatorLayout 的视图。 eg.like 在滑动面板中处理视图工作

Allow only One view that has ablility to scroll the CoordinatorLayout . eg.like Handle view work in Sliding panel

我搜索了很多但没有找到关于堆栈溢出的相同问题

问题-我只想要一个类似滚动CoordinatorLayout的视图 就像在滑动面板布局中处理视图工作

但在我当前的布局中,我有两个视图,一个是句柄视图(带文本的文本视图 "Route Plan"),另一个是 RecyclerView 我想要的是 当用户单击并拖动句柄视图时 CoordinatorLayout 应该滚动但是当用户单击 RecyclerView 它不应该滚动 CoordinatorLayout 它应该只滚动 RecyclerView 项目 是否可能

这是我当前的布局 -

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_sub_tab"
    android:padding="5pt"
    tools:ignore="RtlHardcoded">
    ​

    <android.support.design.widget.AppBarLayout
        android:id="@+id/materialup.appbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        ​

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/main.collapsing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?colorPrimary"
            app:expandedTitleMarginBottom="94dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/tvRoutePlan"
                android:layout_alignParentTop="true"
                android:gravity="top">

                <RelativeLayout
                    android:id="@+id/mapContainer"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </FrameLayout>


        </android.support.design.widget.CollapsingToolbarLayout>
        ​
    </android.support.design.widget.AppBarLayout>
    ​


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <android.support.v4.widget.NestedScrollView
                android:id="@+id/content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbars="none"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"><!--com.indus.corelib.ui.FixedScrollingViewBehavior -->

                <TextView
                    android:id="@+id/tvRoutePlan"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_alignParentBottom="true"
                    android:background="@drawable/map_list_title_gradient"
                    android:drawSelectorOnTop="true"
                    android:gravity="center_horizontal|center_vertical"
                    android:padding="5pt"
                    android:text="Route Plan"
                    android:textColor="@android:color/white"
                    android:textSize="25sp"
                    android:visibility="visible"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
            </android.support.v4.widget.NestedScrollView>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <android.support.v7.widget.RecyclerView
                    android:id="@android:id/list"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:clipToPadding="true"
                    android:nestedScrollingEnabled="false"
                    android:background="@android:color/transparent"
                    android:cacheColorHint="@android:color/white"
                    android:descendantFocusability="blocksDescendants"
                    android:divider="@android:color/darker_gray"
                    android:dividerHeight="@dimen/divider_height"
                    android:drawSelectorOnTop="true"
                    android:smoothScrollbar="true" />
            </LinearLayout>


        </LinearLayout>
    </LinearLayout>


</android.support.design.widget.CoordinatorLayout>

注意:- 当我使用 RecyclerView 的其他视图时,它可以完美地工作,就像我单击并拖动该视图时 CoordinatorLayout 不动 但我需要那里的回收站视图来显示列表:(

所以尝试做这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_sub_tab"
    android:padding="5pt"
    tools:ignore="RtlHardcoded">
    ​

    <android.support.design.widget.AppBarLayout
        android:id="@+id/materialup.appbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        ​

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/main.collapsing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?colorPrimary"
            app:expandedTitleMarginBottom="94dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/tvRoutePlan"
                android:layout_alignParentTop="true"
                android:gravity="top">

                <RelativeLayout
                    android:id="@+id/mapContainer"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </FrameLayout>


        </android.support.design.widget.CollapsingToolbarLayout>
        ​
    </android.support.design.widget.AppBarLayout>
    ​


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <android.support.v4.widget.NestedScrollView
                android:id="@+id/content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbars="none"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"><!--com.indus.corelib.ui.FixedScrollingViewBehavior -->

                <TextView
                    android:id="@+id/tvRoutePlan"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_alignParentBottom="true"
                    android:background="@drawable/map_list_title_gradient"
                    android:drawSelectorOnTop="true"
                    android:gravity="center_horizontal|center_vertical"
                    android:padding="5pt"
                    android:text="Route Plan"
                    android:textColor="@android:color/white"
                    android:textSize="25sp"
                    android:visibility="visible"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
            </android.support.v4.widget.NestedScrollView>    

        </LinearLayout>
    </LinearLayout>

                <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <android.support.v7.widget.RecyclerView
                    android:id="@android:id/list"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:clipToPadding="true"
                    android:nestedScrollingEnabled="false"
                    android:background="@android:color/transparent"
                    android:cacheColorHint="@android:color/white"
                    android:descendantFocusability="blocksDescendants"
                    android:divider="@android:color/darker_gray"
                    android:dividerHeight="@dimen/divider_height"
                    android:drawSelectorOnTop="true"
                    android:smoothScrollbar="true" />
            </LinearLayout>


</android.support.design.widget.CoordinatorLayout>

因此从您的布局行为父级中删除recycleview。因为 recycleview 不在 layout behavior parent 内,所以他不使用 scroll 标志。如果这不起作用,则另一种方法是将 CoordinatorLayout 放在其他布局中,如 LinearLayout 和 recycleview 在 CoordinatorLayout 外部但在 LinearLayout.

内部

注意:这是我的想法,不知道行不行。

是的,我自己得到了答案

只需停止 RecyclerView 的滚动,它就会按我的要求工作

                 <android.support.v7.widget.RecyclerView
                        android:id="@android:id/list"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="@android:color/transparent"
                        android:cacheColorHint="@android:color/white"
                        android:descendantFocusability="blocksDescendants"
                        android:divider="@android:color/darker_gray"
                        android:dividerHeight="@dimen/divider_height"
                        android:drawSelectorOnTop="true"
                        android:nestedScrollingEnabled="false"
                        android:overScrollMode="never"
                        android:fadeScrollbars="false"/> 

我也在 java 文件中使用

        mListView = (RecyclerView) rootView.findViewById(android.R.id.list);
        mListView.setNestedScrollingEnabled(false);
        mListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER);
        mListView.stopScroll();

mListView.stopScroll() 这是真正的游戏规则改变者 但是除了 Bruno Ferreira 没有人尝试解决我的问题,我很不高兴 :( 感谢 Bruno 的帮助