TabPager
不仅集成了
TabPager
和
TabLayout
为顶部选项卡页面,也集成了
ViewPager
和
RadioGroup
为底部导航栏页面,还封装了根据具体页面根据不同的加载状态而显示不同页面的功能,也可以自定义这些页面和其他一些属性。如果某个页面加载数据不成功,切换到其他页面再回来时,框架会自动调用重试加载功能;如果加载成功了,则不再重试加载。
ViewPager
运行效果
- 屏幕截图(
录制卡顿,实际运行流畅):gif
- Demo下载体验,TabPager ,或者扫描二维码下载
TabPager的封装TabPager
依赖
dependencies {
//1.0.3版本之前,不含底部导航栏
compile 'com.yhy:tpg:latestVersion'
//1.0.5版本及之后,加入了底部导航栏
compile 'com.yhy.widget:tabnav:latestVersion'
}
使用说明
顶部选项卡页面控件TpgView
底部导航栏页面控件NavView
嵌套使用
嵌套使用使用方法跟普通使用一样,唯一需要注意的是创建适配器时的
FragmentManager
,如果是一级
Fragment
的话,需要传入
getSupportFragmentManager()
,否则只能是
getChildFragmentManager()
//mAdapter = new PagersAdapter(getFragmentManager());
/*
//这里需要用getChildFragmentManager()
getChildFragmentManager()是fragment中的方法, 返回的是管理当前fragment内部子fragments的manager.
getFragmentManager()在activity和fragment中都有.
在activity中, 如果用的是v4 support库, 方法应该用getSupportFragmentManager(),返回的是管理activity中fragments的manager.
在fragment中, 还叫getFragmentManager(), 返回的是把自己加进来的那个manager.
也即, 如果fragment在activity中, fragment.getFragmentManager()得到的是activity中管理fragments的那个manager.如果fragment是嵌套在另一个fragment中, fragment.getFragmentManager()得到的是它的parent的getChildFragmentManager().
总结就是: getFragmentManager()是本级别管理者, getChildFragmentManager()是下一级别管理者.
这实际上是一个树形管理结构.
*/
mAdapter = new PagersAdapter(getChildFragmentManager());
tpgView.setAdapter(mAdapter);
GItHub
句终
哈哈。。