具有分页功能的 Recyclerview 布局管理器,主打分页,可以替代部分场景下的网格布局,线性布局,以及一些简单的ViewPager,但也有一定的局限性,并不能适用于所有场景,请选择性使用。
另外,该库并不是特别完善,欢迎提交 Issues 或者 PR 来协助我完善。
名称 | 作用 |
---|---|
/java/PagerGridLayoutManager.java | 水平分页网格布局管理器。 |
/java/PagerGridSnapHelper.java | 滚动辅助工具。 |
/java/PagerConfig.java | Pager配置,用于开关调试日志。 |
注意:
1. 一定要在先设置 PagerGridLayoutManager, 之后再设置 PagerGridSnapHelper。
2. 注意名称 PagerGridSnapHelper 不是 PagerSnapHelper。
// 1.水平分页布局管理器
PagerGridLayoutManager layoutManager = new PagerGridLayoutManager(
2, 3, PagerGridLayoutManager.VERTICAL);
layoutManager.setPageListener(this); // 设置页面变化监听器
recyclerView.setLayoutManager(layoutManager);
// 2.设置滚动辅助工具
PagerGridSnapHelper pageSnapHelper = new PagerGridSnapHelper();
pageSnapHelper.attachToRecyclerView(recyclerView);
页面变化监听器
// 当总页数确定时的回调
@Override public void onPageSizeChanged(int pageSize) {
Log.e("TAG", "总页数 = " + pageSize);
}
// 当页面被选中时的回调(从 0 开始)
@Override public void onPageSelect(int pageIndex) {
Log.e("TAG", "选中页码 = " + (pageIndex+1));
}
是否在滚动过程中回调页码变化。
// 如果不想在滚动个过程中回调页码变化,可以这样设置(v1.1.0-beta 以上版本支持)
layoutManager.setChangeSelectInScrolling(false);
切换滚动方向
注意:滚动过程中不可切换方向,设置无效。
mLayoutManager.setOrientationType(PagerGridLayoutManager.HORIZONTAL);
打开调试日志。
// 如果需要查看调试日志可以设置为true,一般情况忽略即可
PagerConfig.setShowLog(true);
目前存在一个问题,使用的时候请务必给 RecyclerView 设置固定大小或者match_parent,如果不设置默认高度为 0 ,则任何内容都不会显示出来。
在项目的 build.gradle
文件中配置仓库地址。
allprojects {
repositories {
jcenter()
// 私有仓库地址
maven { url "http://lib.gcssloop.com/repository/gcssloop-central/" }
}
}
在需要添加依赖的 Module 下添加以下信息,使用方式和普通的远程仓库一样。
compile 'com.gcssloop.support:pagerlayoutmanager:1.3.1@aar'
热门源码