Anroid下拉刷新_SwipeRefreshLayout

SwipeRefreshLayout是Android原生的控件. 提供下拉刷新的功能. 不仅仅是支持ListView和RecyclerView, 支持包裹所有控件下拉刷新操作.

示例

布局中声明

记住SwipeRefreshLayout只能有一个子控件, 如果存在多个只会显示第一个.

1
2
3
4
5
6
7
8
9
10
11
12
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp">
<android.support.v7.widget.RecyclerView
android:id="@id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</android.support.v4.widget.SwipeRefreshLayout>

Activity设置监听器, 3秒后结束刷新.

1
2
3
4
5
6
7
8
9
10
mSwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mSwipe.setRefreshing(false);
}
}, 3000);
}});

API介绍

监听器

刷新监听

1
void setOnRefreshListener (SwipeRefreshLayout.OnRefreshListener listener)

示例:

1
2
3
4
5
6
mSwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// 该方法会在刷新中回调
}
});

显示和隐藏

控制开始刷新和结束刷新. 由于是更新UI记得在主线程操作.

1
void setRefreshing (boolean refreshing)

刷新状态

是否正在刷新中

1
boolean isRefreshing ()

取消刷新

1
void setEnabled (boolean enabled)

样式

设置刷新图标颜色

每次旋转一圈就换颜色. 无限循环

1
2
void setColorSchemeColors (int... colors)
void setColorSchemeResources (int... colorResIds)

设置刷新图标背景颜色

1
2
void setProgressBackgroundColorSchemeResource (int colorRes)
void setProgressBackgroundColorSchemeColor (int color)

设置刷新图标尺寸

1
void setSize (int size)

支持参数:

  1. LARGE
  2. DEFAULT