Что мне нужно, так это то, что анимация SwipeRefresh должна начинаться в верхней части экрана внутри CoordinatorLayout с CollapsingToolbar.Если я оберну RecyclerView внутри SwipeRefreshLayout, анимация начнется ниже CollapsingToolbarLayout.Если я оберну весь CoordinatorLayout внутри SwipeRefreshLayout, то поведение будет не очень точным, и оно не будет работать после первого пролистывания.
Вот макет, где анимация SwipeRefresh отображается под CollapsingToolbar:
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true">
<net.telekom.smartcity.custom.OscaAppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:layout_height="@dimen/services_toolbar_height"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:windowDrawsSystemBarBackgrounds="true"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="@android:color/white"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@id/marketplaceToolbar"
android:fitsSystemWindows="true">
<ImageView
android:id="@+id/zoomableImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="matrix"
android:layout_gravity="center"
app:layout_collapseMode="parallax"
android:fitsSystemWindows="true"/>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black35a"
android:fitsSystemWindows="true"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/services_toolbar_title_top_margin"
android:layout_marginStart="@dimen/services_toolbar_infobox_margin_start"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/marketplace_toolbar_message1"
android:textSize="@dimen/services_toolbar_title_size"
android:paddingBottom="@dimen/services_toolbar_title_padding_bottom"
android:textColor="@color/white"
style="@style/RobotoBold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/services_toolbar_title_description_top_margin"
android:text="@string/services_toolbar_message2"
android:textColor="@color/white"
android:textSize="@dimen/services_toolbar_description_size"
style="@style/RobotoLight"/>
</LinearLayout>
<androidx.appcompat.widget.Toolbar
android:id="@+id/marketplaceToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
android:fitsSystemWindows="false">
<LinearLayout
android:id="@+id/toolbarCityBox"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="start">
<ImageView
android:id="@+id/toolbarCoat"
android:layout_width="@dimen/toolbar_coa_size"
android:layout_height="@dimen/toolbar_coa_size"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/toolbarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/toolbar_title_size"
android:layout_marginStart="16dp"
android:layout_gravity="center_vertical"
android:textColor="@color/black"
style="@style/RobotoMedium"
/>
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</net.telekom.smartcity.custom.OscaAppBarLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>