Уточнение по поводу компоновки надувателя-прикрепить к корню?
Я прочитал ответ на Почему LayoutInflater игнорирует параметры layout_width и layout_height, которые я указал? и хотел убедиться, что я понял, что делает attach to root. В основном, если вы делаете
inflater.inflate(int idOfLayoutFile, ViewGroup parent, boolean AttachToRoot)
И допустим, что родитель не равен нулю
Из того, что я получил из этого ответа, было то, что attach to root просто влияет на то, какой тип возврата имеет метод inflate. То есть, если attachToRoot является true, метод вернет parent, а если это false, то метод будет возвращает корневое представление XML-файла, указанное в идентификаторе ресурса. Есть ли у меня правильная идея или я что-то упускаю?
3 ответа:
Нет, что-то упущено!
Когда вы передадите
trueкак 'attach to root', inflater раздует указанный макет (представленный его идентификатором) , а затем присоединит его к корню родителя и, наконец, вернет родителяНо когда вы оставили "прикрепить к корню" к
false. родительская иерархия не будет изменена, и будет возвращен только увеличенный макет.
Да, вы правы. :: короче говоря
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate( R.layout.your_layout, null); return view; }
- теперь в соответствии с приведенным выше кодом
viewссылка будет содержать корневой элемент для расположениеyour_layout- Вы можете использовать эту ссылку
view, чтобы найти все дочерние представления этого Родительский макет- Вы можете сослаться на ребенка
viewsздесь, даже еслиactivityне является создано еще
Если вы прочитаете это , вы обнаружите, что не следует передавать
nullКак значение rootViewGroup, Если вы не хотите присоединять его, а вместо этого следует использовать 3-параметрическую версиюinflater.inflateс 3-м параметром (attach to root), установленным вfalse. То есть, сделайте так:@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate ( R.layout.your_layout, container, false ); return view; }И из документов :
rootнеобязательное представление, являющееся родителем созданной иерархии (если attachToRoot имеет значение true), или просто объект, который предоставляет наборLayoutParamsзначений для корня возвращаемого объекта. иерархия (Если attachToRoot-false.)И это действительно хорошо.