2016-04-03 2 views
0

В приведенном ниже коде, исправьте меня, если я ошибаюсь, но мы вызываем инфлятор, который я принимаю, является статическим var? Это раздует или преобразует макет, который мы передаем, в тип вида? Но почему и что такое контейнер, и почему мы передаем истинное или ложное значение?В андроиде что такое контейнер и логическое значение при раздувании макета?

View view=inflator.inflate(R.layout.layout_name,container, false); 

ответ

0

Контейнер:ViewGroup вид будет вставлен. Например, если это адаптер для ListView, он будет ListView. Если это Fragment, а ваш контейнер с фрагментами - FrameLayout, то это будет FrameLayout. Это полезно для использования контейнера LayoutParams, поскольку это может решить, как будет выглядеть созданный вами вид.

Boolean: Этот параметр называется attachToRoot. Если это правда, он будет делать addView() на контейнере после раздувания, так что вы будете уже в контейнере после его вызова (и тогда вызовет container.addView(view)). В адаптерах и фрагментах вы должны оставить это на false, потому что их реализация вызовет addView().

Также here's the original documentation, если бы я где-то неясно.

0

container является родителем. Если вы пройдете parent, он будет завышен с родителем. Заданный здесь ViewGroup здесь, как часть параметров метода накачивания, используется для наследования стиля более высокого уровня. Хотя прохождение null может показаться безобидным, это может вызвать серьезные проблемы для вашего приложения. Таким образом, в этом случае вид завышен сам по себе, и вы можете заметить некоторые проблемы с дизайном.

И параметр boolean решает, если вид прикреплен к родительскому или нет.

boolean: Должна ли надутая иерархия прикрепляться к корневому параметру? Если false, root используется только для создания правильного подкласса LayoutParams для корневого представления в XML.

Read more.

+0

ОК, так что такое родительский элемент, и что такое случай, когда мы хотим привязать представление к родительскому? – eli

+0

, упомянутый @DanielZolnai, «если это адаптер для« ListView », он будет« ListView ». Если это« Фрагмент », а ваш контейнер фрагмента« FrameLayout », это будет« FrameLayout ». –