Coordinatorlayout + Viewpager + fragment + recyclerview

  • 155
  • 0

最近剛好遇到一個很棘手的問題 現在寫Blog做紀錄當作以後如果想起來遇到類似的問題的話可以來自己回憶起來

最近剛好遇到一個很棘手的問題 現在寫Blog做紀錄當作以後如果想起來遇到類似的問題的話可以來自己回憶起來,

畫面主要是一個Fragment 裡面包含了 Coordinatorlayout 裡面的畫面也很複雜需要ViewPager 中間又使用Fragment, 而且Fragment裡面又有RecyclerView 而且麻煩的是裡面的Frgament會有兩種Case

1.單純的UI

2.包含RecyclerView 

畫面的排版大概像是這樣子

<CoordinatorLayout>
    
    ...............
    <AppBarLayout>
        <TabLayout> .... </TabLayout>
    </AppBarLayout>

     <ViewPager>
</CoordinatorLayout

ViewPager裡面的Fragment 又會有兩種情況, 所以有可能會造成兩邊ViewPager的內容是不同畫面高度

<LinearLayout>

	<CardView>
		<TextView>
		.................
		
		<RecyclerView>
	  
	</CardView>
</LinearLayout>
<LinearLayout>

  <View>........
  
  <Button>
</LinearLayout>

後來只好放棄使用CoordinatorLayout 跟ViewPager,改成用NestedScrollView搭配FrameLayout

外層的xml改成像是這樣子, 裡面的Fragment則用邏輯去判斷需要Load哪一頁

<NestedScrollView>
  
  <TabLayout> </TabLayout>

  <FrameLayout>
</NestedScrollView
<LinearLayout>

	<CardView>
	
		<RecyclerView>
	<CardView/>

<LinearLayout>

補充說明 : 在原本架構中TabLayout按切換的時候是有可能多筆內容的, 但是變成FrameLayout的時候, 還是有可能要做切換, 但是這時候其實變成是切Activity, 做一個類似的Activity去處理掉