Может кто доходчиво объяснить суть параметров метода inflater.inflate(int resource, ViewGroup root, boolean attachToRoot)? С первым вроде понятно, он по сути, преобразуется из XML в полноценный объект. По второму и третьему как то сухо написано, что один - это родительский элемент (не совсем понятно что за родительский элемент), а второй - отвечает за присоединение этого элемента к родителю или что такое.
Ответ
Вот отличная статья на англосаксонском: Understanding Android's LayoutInflater.inflate()
Краткая выжимка:
LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) - 1 аргумент указание какой файл разметки загрузить. Второй - родительский элемент разметки, в который будет автоматически добавлена загружаемая разметка если 3 параметр true или откуда будут взяты LayoutParams для загружаемой вьюхи, если attachToRoot false
Из п.1 следует, что следующие строки делают одно и тоже:
//загружаем файл разметки и вручную добавляем его в контейнер
View v = inflater.inflate(R.layout.custom_button, mLinearLayout, false);
mLinearLayout.addView(v);
//загружаем файл разметки и автоматически добавляем его в контейнер
inflater.inflate(R.layout.custom_button, mLinearLayout, true);
//загружаем файл разметки и автоматически добавляем его в контейнер
inflater.inflate(R.layout.custom_button, mLinearLayout);
В некоторых случаях система сама добавляет загруженную вьюху в контейнер и ей не надо мешать. Примеры - загрузка разметки для фрагмента и для ячейки списка (ListView, RecyclerView, GridView etc). В этих случаях обязательно надо передавать false последним аргументом. Система сама определит в какой момент разметку надо будет добавить в родительский контейнер
В некторых случаях нет смысла передавать второй аргумент, т.к. его как бы нет. Это случай кастомной разметки диалогов. В этом случае можно передать null вместо родительского элемента загружаемой разметки.
В некоторых случаях используется тэг
Комментариев нет:
Отправить комментарий