Уточнение по поводу компоновки надувателя-прикрепить к корню?
Я прочитал ответ на Почему 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.)И это действительно хорошо.