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

来源:互联网 发布:淘宝上买的司考视频 编辑:程序博客网 时间:2024/05/10 23:46

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

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

阅读全文
1 0