2016-10-13 3 views
0

Я создаю фрагмент внутри другого фрагмента. Внутренний фрагмент имеет свой макет, определенный как match_parent для ширины и высоты. И их родители тоже.Фрагмент не заполняет экран правильно

Это код основного фрагмента. CustomFragment, внутри которого находится внутренний фрагмент. Его обычный фрагмент с календарем.

public class CalendarFragment extends Fragment { 
... 
public void onViewCreated(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ 
customFragment = new CustomFragment(); 
        customFragment.setArguments(bundle); 

        FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
        transaction.add(R.id.calendar_container, customFragment); 
        transaction.commit(); 
... 
} 

Когда fargment оживает, внутренний фрагмент, который содержит календарь регулирует свою высоту в зависимости от содержания каждой календарной ячейки. Снимок экрана. Обратите внимание на пустое пространство:

enter image description here Если оба фрагмента имеют match_parent в своем расположении, почему это происходит?

+0

Удалите это в своей 'Деятельности', если вы настроили' android: fitsSystemWindows = "true" '. – Ironman

+0

@ Ironman У меня нет этого параметра в манифесте. На данный момент мое решение задает минимальную высоту для каждой ячейки на основе высоты родительского фрагмента и количества строк – learner

ответ

0
  1. пожалуйста, убедитесь, что ваш контейнер для второго фрагмента (если таковые имеются) также match_parent
  2. попытаться дать фрагментировать другой цвет фона (т.е. андроид:. Цвет/красный), чтобы проверить, если фрагмент на самом деле уже полный экран, но имеют прозрачный фон. и ваш вид календаря находится только на небольшой части площади фрагмента.
+0

Как я уже сказал, оба являются match_parent – learner

0

попытка заменить эту строку:

transaction.add(R.id.calendar_container, customFragment); 

с этой линией:

transaction.replace(R.id.calendar_container, customFragment); 

и добавьте эту строку после строки фиксации:

getFragmentManager().executePendingTransactions(); 

я надеюсь это поможет вам, для меня это делает работу.

Смежные вопросы