Полноэкранный SwipeRefreshLayout с CollapsingToolbar - PullRequest
0 голосов
/ 01 марта 2019

Что мне нужно, так это то, что анимация 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...