android - RecyclerView的linearLayoutManager.findViewByPosition()问题

 joanV- 发布于 2022-10-28 08:43

看到一个博文Android轻松实现RecyclerView悬浮条

@Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {//滚动时回调(过程) dx: 水平滚动距离 dy:垂直滚动距离
                super.onScrolled(recyclerView, dx, dy);
                //dy > 0 时为手指向上滚动,列表滚动显示下面的内容
                //dy < 0 时为手指向下滚动,列表滚动显示上面的内容
                Log.e(TAG, "onScrolled: " + dx + "\\" + dy );

                View view = linearLayoutManager.findViewByPosition(mCurrentPosition + 1);
                //View.getY()获取到的值为 相对于父视图而言的上边缘的距离  ==》getTop + getTranslationY

                //view.getX 相当于 view距离父容器左边缘的距离 ==》 getleft+getTranslationX(view的偏移量)
                if (view != null) {
                    if (view.getTop() <= mSuspensionHeight) { //view得到的高 小于等于 获取 155
                        mSuspensionBar.setY(-(mSuspensionHeight - view.getTop())); //    给Bar设置高度 ( - 155-(很大的正数) )  取相反数 是因为 y轴正方向向下
                    } else {
                        mSuspensionBar.setY(0);//setY ==> setTranslation(y-getTop)  setTranslationY 在竖直方向上将该控件从它本来的位置偏移i个像素
                    }
                }
                //悬浮条显示的信息是来自第一个可见View的,而其下方的View正是第二个列表项,我们可以获取到它的top值。
                //mCurrentPosition为悬浮条信息来自的那个列表项在RecyclerView的位置
                if (mCurrentPosition != linearLayoutManager.findFirstVisibleItemPosition()) {//返回第一个可见视图的适配器位置
                    //linearLayoutManager.findFirstCompletelyVisibleItemPosition()//返回第一个完全可见视图的适配器位置
                    mCurrentPosition = linearLayoutManager.findFirstVisibleItemPosition();
                    mSuspensionBar.setY(0);

                    updateSuspensionBar();
                }
            }
        });
       // updateSuspensionBar();
 

        

        

            

            

            
        

    

以上为局部代码
问题1:linearLayoutManager.findViewByPosition(mCurrentPosition + 1) 得到的View 是 recyclerview中的重复很多遍的那个item吗
问题2: 为什么向上滑动时 dy的值是一位数(这一位数 是什么鬼啊)
问题3:向上滑动时 getTop 和getX 值是相同的 但是 getX= getTranslationX+getTop啊 为什么getTranslationX一直是0呢

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有