为什么将新片段添加到片段管理器而不是替换它时会发生 UI 变化?

Why UI changes happen when adding a new fragment to Fragment manager instead of replacing it?

我在 activity.

中使用 CollapsingToolbarLayout 和 Fragments

我正在使用以下代码向我的 activity:

添加一个新片段
 FragmentDetails fragmentDetails = FragmentDetails.newInstance();
    new DetailPresenter(fragmentDetails, appRepository, requestedPostId);
    fm.beginTransaction()
      .replace(R.id.fragment_container, fragmentDetails, String.valueOf(requestedPostId))
      .addToBackStack(String.valueOf(requestedPostId))
      .commit();

一切正常,但我想在我的 FragmentManager 中使用 add 而不是 replace,如下所示:

 FragmentDetails fragmentDetails = FragmentDetails.newInstance();
    new DetailPresenter(fragmentDetails, appRepository, requestedPostId);
    fm.beginTransaction()
      .add(R.id.fragment_container, fragmentDetails, String.valueOf(requestedPostId))
      .addToBackStack(String.valueOf(requestedPostId))
      .commit();

但是当我使用 add 而不是 replace 时,我的 CollapsingToolbarLayout 会跳出屏幕 5dp,我的片段视图将是这样的:

为什么会这样?我搜索了很多,但一无所获。

更新: 我在不同的设备上检查过这个。 这发生在 API 23 及以上! 例如在 Android 4.4.2 的设备中,一切正常。

谢谢。

好久没解决这个问题了!

这件事发生在我身上是因为 CoordinatorLayout。我不明白为什么,但问题出在我的工具栏布局从 Appbar 布局顶部留出空白。

我把我所有的代码都放在一个 Linearlayout 中,它解决了我的问题!