Какая польза от "присоединить к корню" в макете?
Я новичок в Android, я знаю, что этот вопрос уже задавался, но я не мог получить удовлетворительное объяснение. Мои сомнения:
- Для чего используется "присоединение к корню", если возможно, на небольшом и понятном примере.
- Когда я искал ответ, люди сказали, что он необязательно используется для присоединения к родительской группе представлений. Что такое иерархия группы представлений?(Это касается представлений, которые мы создали программно, или это также учитывает представления, которые уже объявлены в XML-файле)
Я надеюсь, что вопросы ясны, если нет, пожалуйста, скажите так в комментариях.
5 ответов
Я сам был смущен тем, что было настоящей целью attachToRoot
в inflate
метод. После небольшого изучения пользовательского интерфейса я наконец получил ответ:
родитель:
в данном случае это виджет / макет, который окружает объекты представления, которые вы хотите накачать с помощью findViewById ().
attachToRoot:
присоединяет представления к их родителям (включает их в родительскую иерархию), поэтому любое событие касания, которое получают представления, также будет перенесено в родительское представление. Теперь дело за родителем, хочет ли он развлекать эти события или игнорировать их. если установлено значение false, они не добавляются как прямые дочерние элементы родителя, и родительский элемент не получает никаких событий касания из представлений.
Надеюсь, что это устраняет путаницу
Третий параметр в методе inflate имеет логический тип возврата.
Существует большая путаница(скоро мы доберемся до этой части), когда дело доходит до выбора значения параметра.
Это просто
1) Когда attachToRoot = false, это означает, что
Не присоединяйте дочерний вид к родительскому "Прямо сейчас", добавьте его позже.
2) Когда attachToRoot = true, это означает, что
Присоедините childView к родителю "Прямо сейчас".
В обоих случаях дочернее представление будет добавлено в parentView.Это просто вопрос времени.
Если вы хотите прочитать более подробно вы можете обратиться --->>> этот ответ
(Потому что я не могу опубликовать дубликат ответа здесь, просто хочу помочь).
Например:
ChildView: TextView
Родительское представление (контейнер): LinearLayout
если прикрепить к root = true
val view = layoutInflater.inflate(R.layout.child, containerView, true)
// Not need -> containerView.addView(view)
// This view will be LinearLayout. Not Textview.
если прикрепить к root = false
val view = layoutInflater.inflate(R.layout.child, containerView, false)
containerView.addView(view) // we should add
// This view will be TextView.
Если вы передаете ViewGroup
к этому, он добавит раздутый View
к этому ViewGroup
, Это значит, раздутый View
будет ребенком пройденного ViewGroup
,
Не имеет значения, создается ли ViewGroup программно или в виде XML-файла.
Я думаю: «Прикрепить к root = true» означает, что родительское представление увядает, чтобы создавать другие события, когда представление доступно или нет.
False: означает, что родитель не имеет доступа.
Иерархия группы: это означает, что он должен быть добавлен как дочерний элемент в родительскую «Группу просмотра».