ScrollView嵌套GridView导致GridView不滑动

private float scrollDownY;

private float scrollMoveY;

mGridView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {
            case MotionEvent.ACTION_DOWN:
                scrollDownY = motionEvent.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                scrollMoveY = motionEvent.getY();
                mScrollView.requestDisallowInterceptTouchEvent(true);
                mGridView.setOnScrollListener(new AbsListView.OnScrollListener() {
                    @Override
                    public void onScrollStateChanged(AbsListView absListView, int i) {

                    }

                    @Override
                    public void onScroll(AbsListView absListView, int i, int i1, int i2) {
                        if (scrollMoveY - scrollDownY > 0 && absListView.getFirstVisiblePosition() == 0) {//在顶端的时候
                            mScrollView.requestDisallowInterceptTouchEvent(false);
                        } else if (scrollMoveY - scrollDownY < 0 && absListView.getLastVisiblePosition() == (absListView.getCount() - 1)) {//当在底部的时候
                            mScrollView.requestDisallowInterceptTouchEvent(false);
                        }
                    }
                });
                break;
        }
        return false;
    }
});

 

 

但是需要在GridView的Adapter中添加两条无用数据,即在第一条添加一个无用数据,在最后一条添加一条无用数据,为了

方式滑动特别慢时,

absListView.getFirstVisiblePosition() 和 
absListView.getLastVisiblePosition() 不好用。

会出现向下滑动时,刚看见提一条GridView就不滑动了,和向上滑刚出现最后一条GridView就不滑动了的现象。

这时你添加的无用的 Header和 Footer 就起作用了。


注意:如果你添加的 Header 和 Footer 布局和你的内容布局不一致时,GridView的 高需要写定值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值