文档章节

SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新

冰色
 冰色
发布于 2016/02/01 17:23
字数 367
阅读 8308
收藏 3

SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新
 1. 动态设置SwipeRefreshLayout的是否可以刷新 setEnable(boolean isEnable);
 2. 设置SwipRefreshLayout刷新图标的位置 setProgressViewOffset(true, -20, 100);

 首先看 SwipeRefreshLayout 与 CoordinatorLayout 布局:
 1) SwipeRefreshLayout 作为最外层布局
 2) CoordinatorLayout 作为第二次布局
 3) CoordinatorLayout 中嵌套 AppBarLayout 及 ListView 或 RecyclerView 注意 app:layout_behavior="@string/appbar_scrolling_view_behavior",
 由于 CoordinatorLayout 是 FrameLayout 子类因此 app:layout_behavior 为必要属性,否则无法正常显示
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:addStatesFromChildren="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coord_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clipChildren="false">

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsing_toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clipChildren="false"
                android:theme="@style/AppTheme.AppBarOverlay"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginStart="10dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <android.support.v4.view.ViewPager
                    android:id="@+id/toolbar_viewpager"
                    android:layout_width="match_parent"
                    android:layout_height="180dp"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:clipChildren="false"
                    app:layout_collapseParallaxMultiplier="1" />

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:layout_scrollFlags="scroll|enterAlways"
                    app:popupTheme="@style/AppTheme.PopupOverlay">

                </android.support.v7.widget.Toolbar>

            </android.support.design.widget.CollapsingToolbarLayout>

        </android.support.design.widget.AppBarLayout>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>
 3.设置 SwipeRefreshLayout
    mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_layout);
        mSwipeRefreshLayout.setOnRefreshListener(this);
        //设置样式刷新显示的位置
        mSwipeRefreshLayout.setProgressViewOffset(true, -20, 100);
        mSwipeRefreshLayout.setColorSchemeResources(R.color.swiperefresh_color1, R.color.swiperefresh_color2, R.color.swiperefresh_color3, R.color.swiperefresh_color4);
   
    4.监听 AppBarLayout Offset 变化,动态设置 SwipeRefreshLayout 是否可用
     appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout);
        appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

                if (verticalOffset >= 0) {
                    mSwipeRefreshLayout.setEnabled(true);
                } else {
                    mSwipeRefreshLayout.setEnabled(false);
                }
            }
        });

    
    Demo:https://git.oschina.net/xlxq-PHS/FunUI.git

    写的不好大家多指正

© 著作权归作者所有

冰色
粉丝 3
博文 10
码字总数 3006
作品 0
朝阳
程序员
私信 提问
滑动事件总结(刷新,加载更多,嵌套滑动)

下拉刷新 在Api21之前,ListView和GridView的使用相当普遍,包括下拉刷新我们也可以使用它,利用他的addHeaderView()和addFooterView()方法,或者使用父级中隐藏View的方式来实现; 在A...

卐字旗下的余晖
2016/06/07
101
0
江启12/MeiZiNews

2016/4/29 GitHub:https://github.com/qq137712630/MeiZiNews 碗豆夹下载地址:http://www.wandoujia.com/apps/com.ms.meizinewsapplication #MeiZiNews 性能监听:BlockCanary MVP代码框架......

江启12
2016/04/28
0
0
SwipeRefreshLayout简单说明

SwipeRefreshLayout是谷歌官方的下拉刷新控件,代码在V4包中。 使用SwipeRefreshLayout有几个要注意的: SwipeRefreshLayout和ScrollView一样只能有一个字控件。 setOnRefreshListener设置监...

oschina2136
2015/08/24
0
0
树朾/SmartRefreshLayout

Android智能下拉刷新框架-SmartRefreshLayout English | 中文 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支...

树朾
2017/08/04
0
0
可折叠-上下左右都可滑动-同时具备上拉加载下拉刷新

首先,上下滑动和左右滑动很好解决,ViewPager+TabLayout+ListView就能很好的实现。 最主要的是折叠 + 加载刷新: 一.部局折叠 我们可以使用CoordinatorLayout来实现,它主要的作用是 使用:...

王先森oO
2018/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

威胁快报|新兴挖矿团伙借助shodan作恶,非web应用安全再鸣警钟

近日,阿里云安全发现了一个使用未授权访问漏洞部署恶意Docker镜像进行挖矿的僵尸网络团伙。我们给这一团伙取名为Xulu,因为该团伙使用这个字符串作为挖矿时的用户名。 Xulu并不是第一个攻击...

阿里云官方博客
15分钟前
3
0
MD5 加密需要注意编码格式!!!

相信做过MD5加密的童鞋都遇到过字符编码的坑,一般加密出来的结果和其他人不一样都是字符编码不一致导致的,比如类文件的字符编码、浏览器的字符编码等和对方不一致,所以就需要转码统一字符...

jason_kiss
17分钟前
1
0
python中字符串的操作

https://www.jianshu.com/p/7fc851b6a7ee

writeademo
26分钟前
1
0
如何制定 Java 性能调优标准?

想让你的程序更快更稳,但是系统经常出各种 bug,无从下手?Java 性能调优全攻略来啦! 我有一个朋友,有一次他跟我说,他们公司的系统从来没有经过性能调优,功能测试完成后就上线了,线上也...

Java领航员
27分钟前
2
0
java博客项目

项目地址:https://github.com/otale/tale 项目演示地址:https://tale.biezhi.me/ 项目介绍:Tale使用轻量级mvc框架Blade进行开发,默认主题使用漂亮的pinghsu, 特征 设计简洁,界面美观 ...

编程资源库
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部