ScrollView嵌套RecyclerView出现的滑动以及显示异常的处理

#解决问题:1.滑动冲突 2.显示不完整
##1.滑动冲突:

1.1.重写ScrollView

/**
 * 横向滑动或者竖向的view 滑动不灵敏的问题
 * 外层拦截法
 *核心:不拦截横向滑动,拦截竖向
 */

public class NestedScrollView extends ScrollView {

    private float mDownPosY;
    private float mDownPosX;

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

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        final float x = ev.getX();
        final float y = ev.getY();
        switch (ev.getAction()) {
            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);
    }
}

###1.2.滑动惯性丧失

rvVertical.setNestedScrollingEnabled(false);

##2.条目缺失问题
当第一个window不出现RecyclerView时,我们的显示是没问题的,反之,只能显示一条,或两条这个问题是同事发现的,我们当时都觉得很诡异另外,这是一个深坑,可能这个手机显示没问题,你换个高一点的手机,RecyclerView正好在第一个window露了头,恩恩,结果就是,就剩那么一两条数据了这时,我们怎么处理呢?

有两种方案

###2.1写死条目高度,

网络请求获得条目数量,根据条目数量,动态设置RecyclerView高度缺点:这时RecyclerView的高度是固定的,RecyclerView需要一次就把所有条目加载完,会造成recyclerview无法复 用,此时的recyclerview基本上就与LinearLayout无异,当条目数量很少时你可以这样做,当条目数量很多时,无疑对性能是很大的伤害。

###2.2推荐方法
在外层嵌套一个相对布局即可

   <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:descendantFocusability="blocksDescendants">
            <android.support.v7.widget.RecyclerView
                android:id="@+id/rv_vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
            </android.support.v7.widget.RecyclerView>
            </RelativeLayout>

是不是解决了,这个其实是google的一个小坑
第一篇博客,还希望大家少黑,给点鼓励,分享是前进的动力,大家加油

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值