Мне лично не нравится ответ, в котором говорится, чтобы вызвать invalidateDisplayList (извините, не обижайтесь, Нейт, ничего личного).Я чувствую, что это слишком расплывчато и не объясняет, что это делает под капотом, и, кроме того, вам не нужно вызывать это напрямую в случаях, подобных тому, который объясняется в вопросе ОП.Вы можете просто создать логические значения, которые можно связать для каждой из групп, которые вы хотите показать / скрыть, затем в обработчике событий установите для этих логических значений соответствующее значение, и, если они связаны с видимым, и включите в свойства макета контейнеров теконтейнеры будут внутренне вызывать invalidateDisplayList после вызова set visible и, следовательно, commitProperties.
Это в основном то, что происходит под капотом, насколько я понимаю: способ, которым это работает, заключается в том, что значения не фиксируются или не используются для обновления дисплея до тех пор, покаследующий кадр таким образом, он не увязнет, делая ненужные вычисления макета.Таким образом, вы обновляете свойство bindable, которое запускает событие, которое вызывает уведомление в слушателе (в данном случае это функция, которая устанавливает свойство в вашем элементе управления), которое, в свою очередь, передает значение в элемент управления, который устанавливает внутренний флаг для обновлениясвойство и вызовы invalidateProperties.Когда он переходит к следующей перерисовке кадра, он видит, что флаг свойств загрязнен (true), а затем вызывает commitProperties, это вычисляет / устанавливает соответствующие значения (возможно, также делает недействительными затем «исправление» размера с помощью invalidateSize () и measure ()) ивызывает invalidateDisplayList, затем в течение того же кадра он видит, что флаг списка отображения загрязнен, поэтому он вызывает updateDisplayList, здесь он использует значения свойств для соответствующего рисования.
Вы также должны быть в состоянии достичь этого, используя состояния, которые добавляют или удаляют дочерние элементы из списка отображения на основе массива «действий» для каждого состояния.