SwipeRefreshLayout 嵌套ScrollView 滑动冲突

简介: SwipeRefreshLayout 嵌套ScrollView 滑动冲突

冲突来源于 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);
    }
  }
}
目录
相关文章
Flutter ScrollView嵌套ListView滑动冲突
Flutter ScrollView嵌套ListView滑动冲突
1298 0
|
6月前
|
编解码 Android开发
Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
111 0
|
7月前
|
Android开发
ScrollView中嵌套ListView的问题(转)
ScrollView中嵌套ListView的问题(转)
34 2
|
Android开发
ScrollView 与 ListView 以及 GridView 滑动冲突完美解决
ScrollView 与 ListView 以及 GridView 滑动冲突完美解决
|
Android开发 容器
深入了解View的滑动冲突
在《与滑动冲突的首次邂逅》一文中,笔者举了一个开发过程中出现的一个简单的滑动冲突问题,带大家直观的了解何为滑动冲突,并且使用了内部拦截法(内部解决法)来解决了这个滑动冲突。
深入了解View的滑动冲突
SwipeRefreshLayout 嵌套 RecyclerView滑动冲突
SwipeRefreshLayout 嵌套 RecyclerView滑动冲突
333 0
SwipeRefreshLayout嵌套banner滑动冲突
SwipeRefreshLayout嵌套banner滑动冲突
221 0
|
Android开发
NestedScrollView + ExpandableListView 显示不全问题和滑动冲突问题 。
NestedScrollView + ExpandableListView 显示不全问题和滑动冲突问题 。
还在为ScrollView嵌套RecyclerView而发愁吗?
还在为ScrollView嵌套RecyclerView而发愁吗?
195 0
|
Java Android开发
NestedScrollView嵌套RecyclerView最后一条item显示不全
NestedScrollView嵌套RecyclerView最后一条item显示不全 首先要在最外层的NestedScrollView配置属性 android:fillViewport="true": 然后在上层Ja...
8282 0