SwipeRefreshLayout与ListView,GridView,RecyclerView ,ScrollView 冲突问题总结

基本用法

xml布局

       <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/shop_scrollview_list"
            android:layout_above="@+id/shoplistdi"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

                <ListView
                    android:id="@+id/shop_list_shop"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:divider="@color/B5"
                    android:dividerHeight="1dp"
                    >
                </ListView>
        </android.support.v4.widget.SwipeRefreshLayout>

代码

        //设置刷新时动画的颜色,可以设置4个
        mSwipeRefreshThe.setColorSchemeResources(android.R.color.holo_red_dark);
        //设置下拉刷新
        mSwipeRefreshThe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                getDataFromServer();
            }
        });
埋藏的坑

一 . 只能支持可以滚动的布局

ScrollView view;
ListView view1;
RecyclerView view2;
GridView view3;

二 . 如果出现嵌套布局的话,会出现滑到中间的时候也会下拉刷新,但是我们想要的效果是,当在最顶部的时候才可以下拉刷新,所以需要加判断

//如果是第一个显示的时候才可以下拉刷新,而且加入空布局的话还需要对于totalItemCount 进行判断
 if (totalItemCount > 0) {
     boolean enable = false;
     if (anngridview != null && anngridview.getChildCount() > 0) {
         // check if the first item of the list is visible
         boolean firstItemVisible = anngridview.getFirstVisiblePosition() == 0;
         // check if the top of the first item is visible
         boolean topOfFirstItemVisible = anngridview.getChildAt(0).getTop() == 0;
         // enabling or disabling the refresh layout
         enable = firstItemVisible && topOfFirstItemVisible;
     }
     mSwipeRefreshThe.setEnabled(enable);
 }

三. 当使用嵌套布局的时候,尤其是ListView当数据为空的时候,需要把空界面显示出来,这时候ScrollView +LinearLayout, 只会显示半屏,这算ScrollView 的用法了,最后的解决办法是,在ScrollView 中加入这个属性.

  android:fillViewport="true"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值