https://gist.github.com/chrisbanes/8391b5adb9ee42180893300850ed02f2

ько что обновил до API 26 и поддержки библиотеки 26.0.2. Но я обнаружил, что мойRecyclerView элементы не кликабельны сразу после прокрутки. Если вы подождите секунду, это будет работать. Но если вы щелкнете по элементу немедленно, он не будет. Даже еслиRecyclerView не прокручивается вообще (например, прокручивается до самого верха).

Когда я перешел на поддержку библиотеки 25.4.0, все снова пошло хорошо. Ключевым моментом является то, что мойRecyclerView находится вCoordinatorLayout и имеетSCROLL_FLAG_SCROLL флаг на моемToolbar изAppBarLayout, Если я не использую этот флаг, то эта проблема исчезнет. Так что я думаю, что это скрытое изменение поведения библиотеки поддержки 26.

Я пытался добавитьfocusable="false" кCoordinatorLayout но все равно не повезло.

Есть ли способ отключить это поведение? Потому что действительно раздражает дважды щелкнуть, чтобы вызвать событие щелчка.

 <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinateLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
            android:id="@+id/fragmentAppBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:elevation="0dp"
            android:background="@null">
        <include
                android:id="@+id/dynamicActionBarHolder"
                layout="@layout/dynamic_action_bar"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/pullToRefreshMailRecycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v7.widget.RecyclerView
                android:id="@+id/mailRecyclerView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

    </android.support.v4.widget.SwipeRefreshLayout>

</android.support.design.widget.CoordinatorLayout>

РЕДАКТИРОВАТЬ

Я думаю, что проблема заключается вscrollState изRecyclerView, Когда он остановлен, он не изменяется наSCROLL_STATE_IDLE немедленно. Глядя в исходный кодRecyclerViewЯ нашел тамViewFlinger управление состоянием прокрутки. Когда я бегу вниз, чтобы прокрутить вверх, это не звонитsetScrollState(SCROLL_STATE_IDLE) вместо этого он ждет некоторое время, чтобы запустить этот метод. Чем быстрее я кидаюсь, тем больше времени мне нужно ждать. Это так же, как RecyclerView все еще прокручивается в фоновом режиме. Посколькуscroller.isFinished() не возвращает истину сразу послеRecyclerView прекратить прокрутку, когда он коснулся вершины. Может быть, это ошибкаRecyclerView когда это вCoordinatorLayout.

Ответы на вопрос(3)

Ваш ответ на вопрос