问题描述
我用CollapsingToolbarLayout,RecyclerView和SwipeRefreshLayout在一起:
I use CollapsingToolbarLayout, RecyclerView and SwipeRefreshLayout together:
XML:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/collapse_toolbar_height"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
android:fitsSystemWindows="true"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/toolbar_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
<include
layout="@layout/activity_main_toolbar"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<cz.yetanotherview.webcamviewer.app.helper.EmptyRecyclerView
android:id="@+id/mainList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</android.support.v4.widget.SwipeRefreshLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/floating_action_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_anchor="@id/appbar"
app:layout_anchorGravity="bottom|right|end"
android:layout_margin="16dp"
app:fabSize="mini"
android:src="@drawable/ic_action_edit"
android:onClick="assignSelectedWebCamsToCategory"/>
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/floating_action_menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom|end"
android:paddingRight="10dp"
android:paddingBottom="8dp"
android:paddingLeft="10dp"
fab:menu_shadowColor="#37000000"
fab:menu_colorNormal="#DA4336"
fab:menu_colorPressed="#E75043"
fab:menu_colorRipple="#99FFFFFF"
fab:menu_icon="@drawable/fab_add"
fab:menu_buttonSpacing="10dp"
fab:menu_labels_textColor="@color/very_dark_grey"
fab:menu_labels_textSize="14sp"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/next_grey"
fab:menu_labels_colorRipple="#99FFFFFF"
fab:menu_labels_margin="8dp"
fab:menu_backgroundColor="@color/black_transparent">
<com.github.clans.fab.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_content_import"
fab:fab_size="mini"
fab:fab_label="@string/pref_import_from_server"
fab:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/next_grey"
app:fab_colorRipple="#99FFFFFF"
android:onClick="showSelectionDialog"/>
<com.github.clans.fab.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_content_manually"
fab:fab_size="mini"
fab:fab_label="@string/create_manually"
fab:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/next_grey"
app:fab_colorRipple="#99FFFFFF"
android:onClick="showAddDialog"/>
<com.github.clans.fab.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_content_suggestion"
fab:fab_size="mini"
fab:fab_label="@string/submit_suggestion"
fab:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/next_grey"
app:fab_colorRipple="#99FFFFFF"
android:onClick="showSuggestionDialog"/>
</com.github.clans.fab.FloatingActionMenu>
</android.support.design.widget.CoordinatorLayout>
<include
layout="@layout/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
code:
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
swipeRefreshLayout.setOnRefreshListener(this);
如何让刷卡刷新操作的仅当折叠工具栏布局的完全展开并滚动视图(recyclerview)顶部?类似的行为就像在Google+中或收件箱中的应用程序。
How to allow swipe refresh action only when collapsing toolbar layout is fully expanded and scrollview (recyclerview) on top? The similar behavior like in Google+ or Inbox application.
错误:
好:
推荐答案
最后,
我发现SwipeRefreshLayout作品没有任何黑客从支持库版本的 23.1.1
I found that SwipeRefreshLayout works without any "hacks" from Support Library version 23.1.1.
只需在布局中使用:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
</android.support.v4.widget.SwipeRefreshLayout>
在code:
and in code:
SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setColorSchemeResources(R.color.green, R.color.red, R.color.yellow);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//Your refresh code here
}
});
不要忘了使用:
And don't forget to use:
swipeRefreshLayout.setRefreshing(false);
使用code逻辑后)
after using your code logic ;)
这篇关于安卓:CollapsingToolbarLayout和SwipeRefreshLayout卡住的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!