При обновлении страницы facebook, то SwipeRefreshLayout
, как представляется, в пределах класса активности и идет вниз от верхней части экрана:Реализация SwipeRefreshLayout активности для фрагмента
Что усматривать RecyclerView
под ним обновляется. Вам также потребуется прокрутить весь путь до верхней части экрана до того, как SwipeRefreshLayout
активирует себя - так что если в верхней части экрана не появится ImageView
, тогда, когда вы прокрутите вниз, вы на самом деле просто прокрутка RecyclerView
. На скриншоте ниже мы видим, что верхняя ImageView
не видна, поэтому мы просто прокручиваем наш recyclerview.
Я пытаюсь реализовать что-то подобное в моем приложении, выполнив следующие действия в XML, который похож на первый скриншот Facebook я написал выше - моя деятельность имеет «swipeRefresh значок круга» выходит из верхний и соответствует стандартной компоновки XML для создания toolbar
с ImageView
:
ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ XML:
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipeContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/coordinatorlayout"
>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/appbar"
>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="?attr/colorPrimary"
android:background="@color/white"
app:expandedTitleTextAppearance="@color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
<ImageView
android:id="@+id/backdrop"
android:contentDescription="@string/photo"
android:layout_width="match_parent"
android:background="@color/white"
android:layout_height="192dp"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
>
</android.support.v4.widget.NestedScrollView>
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>
Однако, SwipeRefreshLayout
берет на себя всю деятельность, включая любые действия прокрутки в моем Fragment
, которые я надуваю в своем FrameLayout
, вложенном в мой основной вид деятельности xml. Fragment
, который я надуваю, это RecyclerView
, который прокручивается вверх и вниз, подобно RecyclerView
.
Чтобы уйти от этой проблемы, я знаю, что я могу просто удалить SwipeRefreshLayout
из моего Activity
XML и положил его с моей Fragment
XML, но тогда мой значок SwipeRefresh круга начнется только к концу экрана вместо Вверх.
Не знаете, как Facebook удалось остановить SwipeRefreshLayout
от получения полного фокуса для всех действий прокрутки - кто-нибудь знает, как они реализовали свои SwipeRefreshLayout
?
Это мой фрагмент кода XML:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/snackbarPosition">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/post_container"
android:background="#E0E0E0">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progresswheel"
android:layout_margin="32dp"
android:layout_centerHorizontal="true"
android:visibility="gone"
tools:visibility="visible"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
поместите 'SwipeRefreshLayout' в свой' Фрагмент' не в 'Активность' как родительский. –
yes - как я уже упоминал, что в моем вопросе, но это не самый предпочтительный вариант, так как салфетки для обновления круга начнутся посередине страницы, а не вверху. – Simon
Возможно, вы делаете это неправильно. Пожалуйста, разместите полный код, включая фрагмент. –