SwipeRefreshLayout 嵌套ScrollView 滑动冲突

举报
yechaoa 发表于 2022/05/31 00:01:13 2022/05/31
【摘要】 冲突来源于 ScrollView 向下滑动的时候会触发 SwipeRefreshLayout 下拉刷新。 解决思路: 根据ScrollView 滑动距离动态处理SwipeRefreshLayout 刷...

冲突来源于 ScrollView 向下滑动的时候会触发 SwipeRefreshLayout 下拉刷新。

解决思路:

根据ScrollView 滑动距离动态处理SwipeRefreshLayout 刷新。

        mScrollView.setScrollViewListener(new GradationScrollView.ScrollViewListener() {
            @Override
            public void onScrollChanged(GradationScrollView scrollView, int x, int y, int oldx, int oldy) {
                //y 滚动的高度
                //解决 SwipeRefreshLayout 与 ScrollView 滑动冲突
                if (y <= 0) 
                	mSwipeRefreshLayout.setEnabled(true);
                else 
                	mSwipeRefreshLayout.setEnabled(false);
            }
        });
  • y是ScrollView 滚动的高度
  • 当y<=0的时候即表示 ScrollView 已经滑到顶部了,这个时候就允许触发下拉刷新
  • 反之亦然

自定义带滑动监听的scrollview

package cn.caihuadadao.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;

/**
 * 带滑动监听的scrollview
 */
public class MyScrollView extends ScrollView {

	public interface ScrollViewListener {
		void onScrollChanged(MyScrollView scrollView, int x, int y, int oldx, int oldy);
	}

	private ScrollViewListener scrollViewListener = null;

	public MyScrollView(Context context) {
		super(context);
	}

	public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

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

	public void setScrollViewListener(ScrollViewListener scrollViewListener) {
		this.scrollViewListener = scrollViewListener;
	}

	@Override
	protected void onScrollChanged(int x, int y, int oldx, int oldy) {
		super.onScrollChanged(x, y, oldx, oldy);
		if (scrollViewListener != null) {
			scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
		}
	}

}

文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/86609380

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。