因為RecyclerView做的List上面還要放一些固定的東西,但為了小螢幕手機只好用ScrollView包起來,但為了下拉刷新只好加上SwipeRefreshLayout;
就是ScrollView包SwipeRefreshLayout包RecyclerView,然後...RecyclerView就不秀了,怎麼辦呀?
參考:StackOverflow、CSDN、ivankocijan.xyz、CSDN、珞璃之神
說明:
根據StackOverflow可知,SwipeRefreshLayout外面不能有ScrollView,那就反過來包;SwipeRefreshLayout包ScrollView,這樣就會秀囉。
只是這樣有幾個問題:
- 轉圈(progress view)不在List上方,而是在ScrollView上方。
=>在意的話,只能改成最外面不是SwipeRefreshLayout,而是CoordinatorLayout,參考CSDN、珞璃之神。 - SwipeRefreshLayout會吃ScrollView手勢。
=>可以判斷List到頭才啟用SwipeRefreshLayout,可參考CSDN。
好啦,如果2這做法SwipeRefreshLayout包ScrollView包RecyclerView大致沒問題,只是如果把ScrollView改為NestedScrollView,下面的RecyclerView做的List會全展開,如果想限制項目數,只能自己在程式裡設定高度了。
手機螢幕高度不夠用問題真的很難解,所以Material Design才會用CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout等元件,讓畫面上方有些東西可以在捲動時縮起來,設計畫面時可參考看看囉。
另外,在查資料時發現NestedScrollView在舊版v4包有很多問題,這篇在用v4:27.1.0時已經沒那些問題了。
沒有留言:
張貼留言