Эспрессо, прокрутка не работает, когда NestedScrollView или RecyclerView находится в CoordinatorLayout
Это выглядит какCoordinatorLayout
нарушает поведение действий эспрессо, таких какscrollTo()
или жеRecyclerViewActions.scrollToPosition()
.
Для макета, подобного этому:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
...
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
...
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Если я попытаюсь прокрутить до любого представления внутриNestedScrollView
с помощьюViewActions.scrollTo()
первая проблема, которую я нахожу в том, что я получаюPerformException
, Это потому, что это действие поддерживает толькоScrollView
а такжеNestedScrollView
не расширяет это. Обходной путь для этой проблемы объясненВотв основном мы можем скопировать код вscrollTo()
и изменить ограничения для поддержкиNestedScrollView
, Это похоже на работу, еслиNestedScrollView
не вCoordinatorLayout
но как только вы положите его внутрьCoordinatorLayout
прокрутка не выполняется.
Для того же макета, если я заменюNestedScrollView
сRecyclerView
Есть также проблемы с прокруткой.
В этом случае я используюRecyclerViewAction.scrollToPosition(position)
, в отличие отNestedScrollView
Здесь я вижу прокрутку. Тем не менее, похоже, что он прокручивается в неправильную позицию. Например, если я прокручиваю до последней позиции, это делает видимым второе до последнего, но не последнее. Когда я двигаюRecyclerView
внеCoordinatorLayout
прокрутка работает как надо.
На данный момент мы не можем написать ни одного теста эспрессо для экранов, которые используютCoordinatorLayout
из-за этого проблемы. Кто-нибудь испытывает те же проблемы или знает обходной путь?