2015-05-18 51 views
0

我有一個活動,它內部有一個佔用整個屏幕的片段。在應用程序流程的某個時刻,用戶可以在由兩個獨立片段組成的相同活動中轉到另一個屏幕。所以,你可以把它想象成:Android:在一個頁面上將一個片段變成兩個片段

片段A(屏幕的100%) - >片段B(50%)+ C片段(50%)

我能想到的這樣做的兩種方式,並沒有其中一個特別好。首先是爲其中包含一個容器的活動設置佈局,該容器將容納片段A,然後在片段A中打開片段B和C。我試圖避免使用亞片段,因爲它會導致不尋常的生命週期錯誤,並且它也不受所有api版本的支持。

第二種方法是爲活動分配兩個佈局 - 一個佈局具有一個容器,第二個佈局具有兩個容器,然後在適當的時候使用setcontentview在它們之間切換。我不得不承認,我對這個解決方案也不太滿意,因爲這意味着用戶會看到屏幕重繪爲白色,而不是很好的過渡效果。

有沒有人有任何建議如何最有效地做到這一點?請注意,我確實希望一切都保持在一項活動之下 - 邏輯上它應該是這樣。爲此UI移動進行兩個獨立的活動沒有任何邏輯意義。

+2

在MainActivity中有兩個容器呢?當使用碎片A時,容器1佔據全屏幕。當片段B + C在那裏時,你使用兩個容器佔據屏幕的50%? – apmartin1991

+2

您可以使用由兩個容器組成的'LinearLayout',其中一個初始設置爲重量爲'100',另一個爲重量爲'0'。在運行時,你可以編程調整自己的體重。聽起來像它可以工作 - – PPartisan

+0

- 我會給它一個鏡頭。非常感謝! – Jon

回答

1

解決方法是有兩個容器,並將最上面的一個設置爲wrap_content height,visibility =不可見並且根本不填充它。當我需要移動到兩個窗格設置時,我填充invisibile容器並將其設置爲可見性,從而導致它重新進行測量。當從兩個窗格移回到單個窗格時,請在填充頂部窗格的片段上調用remove。