内部带有 NestedScrollView 的 NavigationView 不会抛出

NavigationView with a NestedScrollView inside does not fling

我有一个带有 NestedScrollView 的 NavigationView,其中包含另一个 NavigationView,目的是为 NavigationView 添加页脚。布局代码如下:

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

<android.support.design.widget.NavigationView ...>

    <android.support.v4.widget.NestedScrollView
        ...
        android:fillViewport="true"
        android:scrollbars="vertical">

        <LinearLayout
            ...
            android:orientation="vertical">

            <android.support.design.widget.NavigationView
                ...
                app:elevation="0dp"
                app:headerLayout="@layout/nav_header"
                app:menu="@menu/nav_menu">
            </android.support.design.widget.NavigationView>

            <LinearLayout
                android:id="@+id/spacer_to_bottom"
                ...
                android:layout_height="0dp"
                android:layout_weight="1">
            </LinearLayout>

            <include layout="@layout/nav_footer"></include>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.NavigationView>

在此处查看完整代码:https://github.com/MarcDahlem/AndroidSidemenuFooterExample/blob/master/app/src/main/res/layout/activity_main.xml

问题是 NavigationDrawer 中的滚动不流畅(不是 "fling")。换句话说,它会在您的手指在屏幕上时滚动,并在您移开手指时停止。

我尝试为 NestedScrollView 的第一个子项(LinearLayout)禁用嵌套滚动,但这没有用。

如有任何帮助,我们将不胜感激。

经过一些调查,我意识到导航视图的第一个子项是 RecyclerView。在该视图上禁用嵌套滚动可解决问题

ViewCompat.setNestedScrollingEnabled(navigationView.getChildAt(0), false);

还有另一种方法可以处理这种嵌套滚动; 如果您正在使用 nestedscroll 视图,并在其中使用一个或多个列表 views/recycler 视图,我们必须启用它; yourlistview.setNestedScrollingEnabled(真);

现在应该可以了。