Android 自定义SwipeRefreshLayout与ListView、ScrollView滑动兼容冲突

本文介绍了一个自定义的SwipeRefreshLayout组件,用于解决与ListView和ScrollView等控件的滑动冲突问题。通过设置特定的方法,可以更好地控制下拉刷新的行为。
public class CustomSwipeRefreshLayout extends SwipeRefreshLayout {

    AbsListView mAbsListView;
    ScrollView mScrollView;
    int type = 0;

    public CustomSwipeRefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * RecyclerView未有冲突,建议使用
     * @param listView
     */
    public void setResolveListView(AbsListView listView) {
        this.mAbsListView = listView;
        type = 1;
    }

    public void setResolveScrollView(ScrollView scrollView) {
        this.mScrollView = scrollView;
        type = 2;
    }

    @Override
    public boolean canChildScrollUp() {
        switch (type) {
            case 1://ListView
                if (mAbsListView != null && mAbsListView instanceof AbsListView&&mAbsListView.getVisibility()==VISIBLE) {
                    return mAbsListView.getChildCount() > 0 && (mAbsListView.getFirstVisiblePosition() > 0 || mAbsListView.getChildAt(0).getTop() < mAbsListView.getPaddingTop());
                }
            case 2://ScrollView
                if (mScrollView != null&&mScrollView.getVisibility()==VISIBLE) {
                    return mScrollView.getScrollY()>0;
                }
                break;
        }
        return super.canChildScrollUp();
    }
 使用说明:
 与常规swipeRefreshLayout使用方式一样。
需要说明的:
调用
setResolveListView、
setResolveScrollView,
调用你需要解决冲突的控件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值