安卓开发监听recyclerview的滑动时某一控件距离顶部的距离来做显示隐藏某些布局

有两种方法!大家可以根据自己的情况做!下面说下步骤!

1、首先添加recyclerview的监听来

recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
                    @Override
                    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                        //dosomething
                    }
                });

2、在onScrolled方法里面添加所做的操作!以LinearLayoutManager为例!

     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);//创建布局管理者

recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            //在此做处理
            if (null != linearLayoutManager) {
                //当前条目索引
                int position = gridLayoutManager.findFirstVisibleItemPosition();

                ****方法1:根据索引来做显示隐藏判断****

                //根据当前条目索引做判断处理。例如:如果在索引是0,
                     隐藏显示某个布局,索引大于0显示出来
                if (position > 0) {
                    //做显示布局操作
                    view.setVisibility(View.VISIBLE);
                } else {
                    //做隐藏布局操作
                    view.setVisibility(View.GONE);

                }
              ****方法2:根据view的高度来做显示隐藏判断 ****

                //根据索引来获取对应的itemView
                View firstVisiableChildView = linearLayoutManager
                        .findViewByPosition(position);
                //获取当前显示条目的高度
                int itemHeight = firstVisiableChildView.getHeight();
                //获取当前Recyclerview 偏移量
                int flag = (position) * itemHeight - firstVisiableChildView.getTop();
                if (flag >= itemHeight) {
                    //做显示布局操作
                        view.setVisibility(View.VISIBLE);
                } else {
                    //做隐藏布局操作
                        view.setVisibility(View.GONE);
                }

            }
        }
    });

补充提示(有些操作可以根据第一个item的view或最后一个item的view距离顶部或者底部的距离来做处理)

  View view = gridLayoutManager.findViewByPosition(0);//gridLayoutManager布局管理器
  if(null!=view){
    view.getBottom();
  }

注释都写了!哈哈哈!希望对大家有帮助!有问题可加Q询问!
463263900

猜你喜欢

转载自blog.csdn.net/qq_33373648/article/details/78539293