Espresso, Bildlauf funktioniert nicht, wenn sich NestedScrollView oder RecyclerView in CoordinatorLayout befindet

Es sieht aus wieCoordinatorLayout unterbricht das Verhalten von Espresso-Aktionen wiescrollTo() oderRecyclerViewActions.scrollToPosition().

Issue with NestedScrollView

Für ein Layout wie dieses:

<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>

Wenn ich versuche, zu einer Ansicht innerhalb des @ zu scrollNestedScrollView usingViewActions.scrollTo() Das erste Problem, das ich finde, ist, dass ich ein @ bekomPerformException. Dies liegt daran, dass diese Aktion nur @ unterstützScrollView undNestedScrollView erweitert es nicht. Eine Problemumgehung für dieses Problem wird unter @ erläuterHie, im Grunde können wir den Code in @ kopierscrollTo() und ändern Sie die Einschränkungen zu supportNestedScrollView. Dies scheint zu funktionieren, wenn dasNestedScrollView ist nicht in einemCoordinatorLayout aber sobald du es in ein @ steckCoordinatorLayout Der Bildlauf schlägt fehl.

Issue with RecyclerView

Für das gleiche Layout, wenn ich das @ ersetNestedScrollView mit einerRecyclerView es gibt auch probleme mit dem scrollen.

In diesem Fall verwende ichRecyclerViewAction.scrollToPosition(position). Im Gegensatz zu denNestedScrollView, hier kann ich ein Scrollen sehen. Es sieht jedoch so aus, als würde der Bildlauf an der falschen Position ausgeführt. Wenn ich zum Beispiel zur letzten Position scrolle, wird die vorletzte, aber nicht die letzte Position angezeigt. Wenn ich das @ beweRecyclerView aus demCoordinatorLayout das scrollen funktioniert wie es sollte.

erzeit können wir keinen Espresso-Test für die Bildschirme schreiben, die @ verwendeCoordinatorLayout aufgrund dieser Probleme. Treten die gleichen Probleme auf oder kennen Sie eine Problemumgehung?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage