根据需求针对横向显示的列表增加一个滚动条显示。
效果图:
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);