内部带有NestedScrollView的NavigationView不会丢失

时间:2017-04-27 09:12:05

标签: android android-layout navigation-drawer android-navigation-drawer navigationview

我有一个带有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中的滚动不顺畅(不“甩”)。换句话说,它会在您的手指在屏幕上时滚动,并在您移开手指时停止。

我尝试为NestedScrollView的第一个子节点(LinearLayout)禁用嵌套滚动但这不起作用。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

还有另一种处理这种嵌套滚动的方法; 如果您正在使用nestedscroll视图,并在其中使用一个或多个列表视图/回收站视图,我们必须启用此功能; yourlistview.setNestedScrollingEnabled(真);

现在应该可以了。