接上面的 实现一大块复杂的布局滑动离开界面,然后Tab栏能一直停留,下面通过List来展示数据。首先还是先看实现效果:
由于该界面是公司上线软件,因此初始的xml布局中是没有数据的,这个是一个fragment的布局,项目用了大量的Activity嵌套Fragment、Fragment嵌套Fragment实现,关于嵌套见别的记录。该布局最上方大概120dp空白处是一个轮播图,轮播图下发是固定的分类标签,再下发是一个公告栏,再下方白色空白是TabLayout,下方是ViewPager。
从上可见,一个LinearLayout里面包含了大量布局,然后设置了none滚动模式,滑动时会平滑的离开屏幕,最终TabLayout停留在屏幕上方。ViewPager中为Fragment,
通过RecylerView来展示数据(这里不用ListView的原因是RecyclerView已经实现了.NestedScrollChild与父布局的滑动事件不冲突)。下拉刷新通过最外层的SwipeRefreshLayout来实现(但是这里有一个坑,需要通过对AppBarLayout折叠状态的监听来设置SwipeRefreshLayout的Enable,即当AppBarLayout完全展开时才给予SwipeRefreshLayout拥有滑动事件,并能产生下拉刷新事件),SwipeRefreshLayout也实现了NestedScrollChild与NestedScrollParent,上啦加载更多通过监控NestedScrollView的滑动状态来实现。
还有更负责的布局,即Activity中包含了CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar模式的布局,然后Activity中为CoordinatorLayout设置Behevior的View为FramLayout,里面又加载了一个Fragment,Fragment又是CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar+TabLayout+ViewPager的模式。这样实现了一个竞拍详情页的布局。
最上方为标题栏,并通过监听AppBar的状态显示不同的背景色。上方白色空白为轮播图,下方红色栏为滑动胡折叠在顶部的布局,还包含了一个倒计时控件。下发空白部分为加载Fragment的地方。
Fragment中显示的一大块滑动时都平滑的离开屏幕,下发的TabLayout悬停在顶部,ViewPager中加载3个Fragment。
另外再记录下这套有下拉刷新与上拉加载功能的界面,无数据时显示暂无数据页面。能够适用于MD风格中的NestedScroll事件。