Android: 一页上一个片段变成两个片段

Android: one fragment turning into two fragments on one page

我有一个 activity,其中有一个片段占据了整个屏幕。在应用程序流程的某个时刻,用户可以转到同一 activity 中的另一个屏幕,该屏幕由两个单独的片段组成。所以你可以把它想象成:

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

我可以想到两种方法,但都不是特别好。第一个是为 activity 设置一个布局,其中有一个容器将容纳片段 A,然后让片段 A 在其中打开子片段 B 和 C。我试图避免使用子片段,因为它会导致不寻常的生命周期错误,而且 api 的所有版本都不支持它。

第二种方法是为 activity 设置两个布局 - 一个布局具有单个容器,第二个布局具有两个容器,然后在适当的时候使用 setcontentview 在它们之间切换。我不得不承认我对这个解决方案也不太满意,因为这意味着用户将看到屏幕重绘白色而不是漂亮的过渡效果。

有没有人对如何最有效地执行此操作有任何建议?请注意,我确实希望所有内容都保持在一个 activity 之下 - 逻辑上应该是这样。为这个 UI 运动安排两个单独的活动是没有逻辑意义的。

通过拥有两个容器并将最上面的容器设置为 wrap_content 高度、visibility=invisible 并且根本不填充它来解决。当我需要移动到两个窗格设置时,我填充不可见容器并将其可见性设置为可见,这会导致它重新测量。当从两个窗格返回到单个窗格时,请在填充顶部窗格的片段上调用 ​​remove。