重置 NavigationView 滚动

Reset NavigationView scroll

一个简单的问题,我自己找不到答案或想不通。

如何让 NavigationView 在打开时始终从其 "original" 滚动位置开始,以便第一个菜单项始终可见,而不管之前滚动位置位于何处。

我已经尝试过但没有成功:

drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
    ...

    @Override
    public void onDrawerClosed(View drawerView) {
        drawerView.scrollTo(0, 0);
    }

    ...
});

谢谢。

如果您想在用户选择抽屉中的某些项目时更新抽屉项目。然后

您应该为 onItemClick 中的列表视图刷新适配器。 调用 notifydatasetchange() 以反映更改。 但是,如果您希望用户在列表中选择了某些项目,然后在选择后关闭抽屉,您想要更新列表,对于这种情况,您

监听抽屉关闭事件 -

public void onDrawerClosed(View view) {

// refresh adapter and call notify data set change.

}

看到这个 link : https://developer.android.com/training/implementing-navigation/nav-drawer.html

在检查了 NavigationView 小部件的视图层次结构之后,它由一个扩展 RecyclerView 的 NavigationMenuView 组成,因此使用它我想出了这个恶作剧:

((NavigationMenuView)((NavigationView)drawerView).getChildAt(0)).scrollToPosition(0);