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

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

  • Что такое "прикрепить к корню", если это возможно, с небольшим и ясный пример.
  • Когда я искал ответ, люди сказали, что его опционально используется для attach to parent view group, Что такое иерархия группы представлений? (Is что с учетом взглядов, которые мы создали программно, или также рассматривая представления, которые уже объявлены в XML файле)

Надеюсь, что вопросы будут ясными, если не скажите об этом в комментариях.

Ответ 1

Я тоже был смущен тем, какова была настоящая цель метода attachToRoot в inflate. После небольшого изучения пользовательского интерфейса я наконец получил ответ:

parent:

в этом случае является виджет/макет, который окружает объекты вида, которые вы хотите раздуть, используя findViewById().

attachToRoot:

прикрепляет представления к их родительскому объекту (включает их в родительскую иерархию), поэтому любое событие касания, получаемое просмотрами, также будет перенесено в родительское представление. Теперь до родителя, хочет ли он развлекать эти события или игнорировать их., если установлено значение false, они не добавляются как прямые дочерние элементы родителя, а родитель не получает никаких событий касания из представлений.

Надеюсь, это очистит путаницу

Ответ 2

Если вы передадите ему ViewGroup, он добавит надутый View к этому ViewGroup. Это означает, что надутый View будет дочерним элементом прошедшего ViewGroup.

Не имеет значения, является ли ViewGroup программным или файлом xml.

Ответ 3

Третий параметр метода inflate имеет тип логического возврата.
Существует много путаницы (скоро придет к этой части), когда выберете значение параметра.

Простой
1) Когда attachToRoot = false означает

Не прикрепляйте дочерний вид к родительскому "прямо сейчас" , добавьте его позже.

2) Когда attachToRoot = true, это означает

Прикрепите дочерний элемент к родительскому "Right Now".

В обоих случаях дочернее представление будет добавлено к parentView в конечном итоге. Это вопрос времени.
Если вы хотите прочитать более подробную информацию, вы можете отсылать --- → > этот ответ

 (Потому что я не могу отправить дубликат ответа здесь, просто хочу помочь).

Ответ 4

Основное различие между "третьим" параметром attachToRoot, равным true или false, заключается в следующем.

true: добавить дочернее представление к родителю RIGHT NOW false: добавить дочернее представление к родителю NOT NOW

Распространенным заблуждением является то, что если параметр attachToRoot имеет значение false, то дочернее представление не будет добавлено к родительскому. НЕПРАВИЛЬНО В обоих случаях дочерний вид будет добавлен в parentView. Это просто вопрос времени. по факту

Вы никогда не должны передавать attachToRoot как true, если вы не несете ответственности за добавление дочернего представления к родительскому.

Ответ 5

Например:

ChildView: TextView

Parent(Container)View: 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.