Toolbar滑动隐藏与IRecyclerView冲突

1、给Appbar添加监听

        appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                if (!AppBarUtils.isAppBarLayoutOpen(verticalOffset) && !AppBarUtils.isAppBarLayoutClose(appBarLayout,
                        verticalOffset)) {
                    mRecyclerView.setEnabled(false);
                } else {
                    mRecyclerView.setEnabled(true);
                }
            }
        });

2、RecyclerView的mLastTouchY计算错误,会出现画面跳动的现象

  @Override
    public boolean onTouchEvent(MotionEvent e) {
        final int action = MotionEventCompat.getActionMasked(e);
        switch (action) {
            case MotionEvent.ACTION_DOWN: {

            }
            break;

            case MotionEvent.ACTION_MOVE: {
               if (mStatus == STATUS_SWIPING_TO_REFRESH || mStatus == STATUS_RELEASE_TO_REFRESH) {
                 setLastTouchY(mLastTouchY);
                 return true;
           }            
            }
            break;
        }
        return super.onTouchEvent(e);
    }

    private void setLastTouchY(int lastY) {
        try {
            Field field = RecyclerView.class.getDeclaredField("mLastTouchY");
            field.setAccessible(true);
            field.setInt(this, lastY);
            Log.i("TEST", "mLastTouchY: " + lastY);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容