Android之RecyclerView自定义滚动条

根据需求针对横向显示的列表增加一个滚动条显示。

效果图:

Android之RecyclerView自定义滚动条_第1张图片

Recycleview列表实现原来是啥就是啥,先看看列表下面的滚动条。

滚动条布局:

               

                    

                    
                

资源文件shape_bg_slip_behind.xml



    
    

资源文件shape_bg_slip_front.xml



    
    

 之后就需要监听列表的滑动事件了。

        // 这里的mRvHx是需要绑定滚动条的RecyclerView
        rv_main_app.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                // 整体的总宽度,注意是整体,包括在显示区域之外的。
                int range = rv_main_app.computeHorizontalScrollRange();
                float density = getScreenDensity();
                // 计算出溢出部分的宽度,即屏幕外剩下的宽度
                float maxEndX = range - ScreenUtils.getScreenWidth() + (25 * density) + 5;
                // 滑动的距离
                endX[0] = endX[0] + dx;
                // 计算比例
                float proportion = endX[0] / maxEndX;

                // 计算滚动条宽度
                int transMaxRange = ((ViewGroup) view_slip_front.getParent()).getWidth() - view_slip_front.getWidth();
                // 设置滚动条移动
                view_slip_front.setTranslationX(transMaxRange * proportion);
            }

        });

注意:当数据刷新时需要改变为初始的样子:

view_slip_front.setTranslationX(0);
rv_view.scrollToPosition(0);

 

你可能感兴趣的:(Android之自定义View)