Какая польза от "прикрепления к корню" в маятнике?
Я новичок в 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.