ScrollView嵌套RecyclerView冲突解决

1. ScrollView滑动不到顶部:
用这两句解决:
android:focusable=“true”
android:focusableInTouchMode=“true”

<com.huolian.zsss.widget.SlideListenerNestScrollview xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:overScrollMode="never">

    <LinearLayout
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

2.禁止recyclerview滑动
重写LinearLayout的canScrollVertical

 recruitMainJobslist.setLayoutManager(new LinearLayoutManager(recruitMainActivity.this) {
            @Override
            public boolean canScrollVertically() {
                return false;
            }
        });

3.显示不全



import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.core.widget.NestedScrollView;
/**
 * 解决scrollview与viewPager滑动冲突,解决gridRecyclerView-scrollView显示不全
 *  拦截父类Interceptor
 */
public class SlideListenerNestScrollview extends NestedScrollView {

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

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

    public SlideListenerNestScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (mScrollChangeListener != null) {
            mScrollChangeListener.onScroll(this, l, t);
        }
    }

    private ScrollChangeListener mScrollChangeListener;

    public void setmScrollChangeListener(ScrollChangeListener listener) {
        mScrollChangeListener = listener;
    }

    public interface ScrollChangeListener {
        void onScroll(SlideListenerNestScrollview slideListenerScrollview, int dx, int dy);
    }

    @Override
    public void computeScroll() {
        super.computeScroll();
    }

    private float mDownPosX = 0;
    private float mDownPosY = 0;

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        final float x = ev.getX();
        final float y = ev.getY();

        final int action = ev.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                mDownPosX = x;
                mDownPosY = y;
                break;
            case MotionEvent.ACTION_MOVE:
                final float deltaX = Math.abs(x - mDownPosX);
                final float deltaY = Math.abs(y - mDownPosY);
                // 这里是够拦截的判断依据是左右滑动,读者可根据自己的逻辑进行是否拦截
                if (deltaX > deltaY) {
                    return false;
                }
        }
        return super.onInterceptTouchEvent(ev);
    }
}

具体为啥,没看

4.scrollview recyclerView 去掉阴影:

android:overScrollMode=“never”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值