我们可以使用SwipeRefreshLayout来实现下拉刷新功能(也有很多其他控件,酌情使用)。
在布局文件中,把我们需要下拉刷新的布局放入SwipeRefreshLayout中进行布局设计(一般只放一个,不过大多数情况一个Recyclerview就够了),布局简单如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_fragment3"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
之后我们在活动中实现swipeRefreshLayout 的具体功能:
swipeRefreshLayout = view.findViewById(R.id.swipe_refresh);
//设置刷新标志的背景颜色
swipeRefreshLayout.setProgressBackgroundColorSchemeResource(android.R.color.white);
//设置刷新刷新标志的颜色(可以设置多个颜色,他会变化)
swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);
//这里实现刷新时的逻辑
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(view.getContext(),"刷新ing",Toast.LENGTH_SHORT).show();
//具体逻辑
//这是是把下拉刷新的状态设为不刷新,这样下拉刷新框就回去了
swipeRefreshLayout.setRefreshing(false);
}
}, 2000);
}
});