當您刷新Facebook頁面活動中,SwipeRefreshLayout
似乎被放置在活動課中,並從屏幕頂部歸結:實施SwipeRefreshLayout在片段
什麼似乎是一個它下面的RecyclerView
被刷新。在SwipeRefreshLayout
將自動激活之前,您還需要一直滾動到屏幕的頂部 - 所以如果工具欄中的ImageView
未出現在屏幕的頂部,那麼當您向下滑動時,實際上只是滾動RecyclerView
。在下面的屏幕截圖中,我們可以看到頂部的ImageView
不可見,所以我們只是滾動我們的recyclerview。
我想實現我的應用程序做的XML看起來類似於首款Facebook截圖我上面貼以下類似的東西 - 我的活動有「swipeRefresh圓圈圖標」從出來頂部,並遵循用於與ImageView
建立toolbar
的標準佈局的xml:
主要活動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
,它滾動上下類似於Facebook的RecyclerView
。
要想從這個問題的時候,我知道,我只能從我的Activity
XML刪除SwipeRefreshLayout
,並把它與我的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'放在你的'Fragment'中,而不是'Activity'作爲父項。 –
是的 - 正如我在我的問題中提到的,但這不是首選選項,因爲刷新刷新圈將從頁面中間開始,而不是在頂部。 – Simon
可能是你做錯了。請發佈您的完整代碼,包括片段部分。 –