Какая польза от "присоединить к корню" в макете?

Я новичок в Android, я знаю, что этот вопрос уже задавался, но я не мог получить удовлетворительное объяснение. Мои сомнения:

  1. Для чего используется "присоединение к корню", если возможно, на небольшом и понятном примере.
  2. Когда я искал ответ, люди сказали, что он необязательно используется для присоединения к родительской группе представлений. Что такое иерархия группы представлений?(Это касается представлений, которые мы создали программно, или это также учитывает представления, которые уже объявлены в 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: означает, что родитель не имеет доступа.

Иерархия группы: это означает, что он должен быть добавлен как дочерний элемент в родительскую «Группу просмотра».

Другие вопросы по тегам