Сбросить прокрутку NavigationView

простой вопрос, на который я не смог найти ответ или понять сам.

Как сделать так, чтобы NavigationView всегда начинался с «исходной» позиции прокрутки всякий раз, когда он открыт, чтобы первый пункт меню всегда был виден независимо от того, где ранее была оставлена ​​позиция прокрутки.

Я пробовал это без успеха:

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

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

    ...
});

Спасибо.


person Andre Romano    schedule 27.02.2017    source источник


Ответы (2)


Хорошо, после изучения иерархии View виджета NavigationView, она состоит из NavigationMenuView, который расширяет RecyclerView, поэтому, используя это, я придумал эту махинацию:

((NavigationMenuView)((NavigationView)drawerView).getChildAt(0)).scrollToPosition(0);
person Andre Romano    schedule 01.03.2017

Если вы хотите обновить элементы ящика, когда пользователь выбрал какой-либо элемент в ящике. затем

вам следует обновить адаптер для просмотра списка в onItemClick. вызовите notifydatasetchange(), чтобы отразить изменения. Но если вы хотите, чтобы пользователь выбрал какой-либо элемент в списке, то при закрытии ящика после выбора вы хотите обновить список, в этом случае вы

Слушайте закрытие события ящика -

public void onDrawerClosed(View view) {

// refresh adapter and call notify data set change.

}

См. эту ссылку: https://developer.android.com/training/implementing-navigation/nav-drawer.html

person Luiz Fernando Salvaterra    schedule 27.02.2017