接上面的 實現(xiàn)一大塊復雜的布局滑動離開界面,然后Tab欄能一直停留,下面通過List來展示數(shù)據(jù)。首先還是先看實現(xiàn)效果:
由于該界面是公司上線軟件,因此初始的xml布局中是沒有數(shù)據(jù)的,這個是一個fragment的布局,項目用了大量的Activity嵌套Fragment、Fragment嵌套Fragment實現(xiàn),關(guān)于嵌套見別的記錄。該布局最上方大概120dp空白處是一個輪播圖,輪播圖下發(fā)是固定的分類標簽,再下發(fā)是一個公告欄,再下方白色空白是TabLayout,下方是ViewPager。
從上可見,一個LinearLayout里面包含了大量布局,然后設(shè)置了none滾動模式,滑動時會平滑的離開屏幕,最終TabLayout停留在屏幕上方。ViewPager中為Fragment,
通過RecylerView來展示數(shù)據(jù)(這里不用ListView的原因是RecyclerView已經(jīng)實現(xiàn)了.NestedScrollChild與父布局的滑動事件不沖突)。下拉刷新通過最外層的SwipeRefreshLayout來實現(xiàn)(但是這里有一個坑,需要通過對AppBarLayout折疊狀態(tài)的監(jiān)聽來設(shè)置SwipeRefreshLayout的Enable,即當AppBarLayout完全展開時才給予SwipeRefreshLayout擁有滑動事件,并能產(chǎn)生下拉刷新事件),SwipeRefreshLayout也實現(xiàn)了NestedScrollChild與NestedScrollParent,上啦加載更多通過監(jiān)控NestedScrollView的滑動狀態(tài)來實現(xiàn)。
還有更負責的布局,即Activity中包含了CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar模式的布局,然后Activity中為CoordinatorLayout設(shè)置Behevior的View為FramLayout,里面又加載了一個Fragment,F(xiàn)ragment又是CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar+TabLayout+ViewPager的模式。這樣實現(xiàn)了一個競拍詳情頁的布局。
最上方為標題欄,并通過監(jiān)聽AppBar的狀態(tài)顯示不同的背景色。上方白色空白為輪播圖,下方紅色欄為滑動胡折疊在頂部的布局,還包含了一個倒計時控件。下發(fā)空白部分為加載Fragment的地方。
Fragment中顯示的一大塊滑動時都平滑的離開屏幕,下發(fā)的TabLayout懸停在頂部,ViewPager中加載3個Fragment。
另外再記錄下這套有下拉刷新與上拉加載功能的界面,無數(shù)據(jù)時顯示暫無數(shù)據(jù)頁面。能夠適用于MD風格中的NestedScroll事件。