Почему изменения пользовательского интерфейса происходят при добавлении нового фрагмента в диспетчер фрагментов вместо его замены? - PullRequest
0 голосов
/ 30 июня 2018

Я использую CollapsingToolbarLayout в и фрагменты в моей деятельности.

Я использую приведенный ниже код для добавления нового фрагмента в свою деятельность:

 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 голосов
/ 18 июля 2018

Я решил эту проблему через долгое время!

Это случилось со мной из-за CoordinatorLayout. Я не могу понять, почему, но проблема была в моей компоновке панели инструментов, которая занимала поле сверху Appbar макета.

Я поместил весь свой код в Linearlayout, и это решило мою проблему!

...