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

时间:2018-06-30 10:26:25

标签: android android-fragments android-collapsingtoolbarlayout fragmentmanager

我在活动中使用CollapsingToolbarLayout和Fragments。

我正在使用以下代码,以便向活动添加新片段:

 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();

一切正常,但是我想像这样在我的add中使用replace而不是FragmentManager

 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的屏幕外,我的片段视图将是这样的:

enter image description here

为什么会这样?我搜索了很多,但什么都没找到。

更新:  我在其他设备上进行了检查。  这发生在API 23及更高版本中!   例如,在装有Android 4.4.2的设备中,一切正常。

谢谢。

1 个答案:

答案 0 :(得分:0)

很久以后我解决了这个问题!

这是由于CoordinatorLayout而引起的。我不明白为什么,但是问题出在我的工具栏布局上,该布局从Appbar的顶部开始留有空白。

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