Прокрутите определенный элемент меню вверх в navigationView, когда вызывается onDrawerOpened()

Я использую NavigationView (android.support.design.widget.NavigationView) в DrawerLayout. Мне интересно, есть ли возможность программно прокручивать определенный элемент, когда пользователь открывает ящик. (в то время как onDrawerOpened() вызывается в действии)

Например, когда пользователь открывает ящик, я хочу, чтобы MenuItem «action_feedback» был вверху DrawerLayout (прокручивался вверх).

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
    <item
        android:id="@+id/action_current_list"
        android:checked="true"
        android:icon="@drawable/ic_current_list"
        android:title="@string/current_list" />
    <item
        android:id="@+id/action_manage_lists"
        android:icon="@drawable/ic_my_lists"
        android:title="@string/my_lists" />
    <item
        android:id="@+id/action_search_products"
        android:icon="@drawable/ic_search_black_24dp"
        android:title="@string/search_products" />
    <item
        android:id="@+id/action_deals"
        android:icon="@drawable/ic_product_promo"
        android:title="@string/deals" />
</group>
<group android:id="@+id/nav_footer"
        android:checkableBehavior="single">
    <item
        android:id="@+id/action_feedback"
        android:icon="@drawable/ic_feeback"
        android:title="@string/feedback" />
    <item
        android:id="@+id/action_sign_out"
        android:icon="@drawable/ic_sign_out"
        android:title="@string/sign_out" />
</group>

Earlier I had Custom Layout (ScrollView + ListView) in DrawerLayout, and It was possible using scrollView.scrollTo(x,y).

Заранее спасибо.


person aadi53    schedule 12.11.2015    source источник


Ответы (1)


person    schedule
comment
Спасибо за голову. Я пробовал так, но не прокручивал элемент вверх. Нужно ли обновлять данные представления ресайклера? Я пробовал recycleView.getAdepter().notifyStateChanged(), но не повезло!! - person aadi53; 20.11.2015
comment
Обновил мой ответ. Предыдущий ответ работал, но требовалось, чтобы ваш элемент вообще не был виден. Текущий подход будет работать так же, как прокрутка с помощью ListView - и это то, что вы, вероятно, ожидаете. - person Marcel Wesołowski; 21.11.2015
comment
Если вы хотите, чтобы все было гладко.. Вместо layoutManager.scrollToPositionWithOffset(4, 0); Попробуйте RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(context) { @Override protected int getVerticalSnapPreference() { return LinearSmoothScroller.SNAP_TO_START; } }; SmoothScroller.setTargetPosition (позиция); layoutManager.startSmoothScroll(smoothScroller); - person Shamik Chodankar; 04.09.2018