2010-10-01 2 views
17

Поэтому я могу раздуть ViewStub во время выполнения. Предположим, я хочу, чтобы оно исчезло, а затем, возможно, снова раздувается в зависимости от какого-либо события (например, панели инструментов, которые раздуваются и дефлируются в соответствии с тем, что пользователь выбирает на экране).Как «сдуть» ViewStub?

Я могу использовать View.setVisibility (View.GONE) .... есть ли другой способ?

Или я здесь что-то не так?

Спасибо! :)

+0

'setVisibility (View.GONE)' немного более наглядно. – st0le

+0

Спасибо .... Отредактировано – Sid

+0

Что вам не нравится в View.GONE? –

ответ

33

Надувные макеты могут быть дорогими, особенно на старых устройствах. Подумайте, что ViewStub является более ленивым механизмом для просмотра поддеревьев, которые могут или не могут быть расширены, а не способ поменять разделы иерархии представлений во время выполнения. После завывания, нет ничего плохого в обмене между VISIBLE/GONE. GONE заставит инфраструктуру пропустить это поддерево во время дорогих обходов.

Это правда, если вам не нужна память, используемая надутым видом. Настройка видимости на GONE не освобождает память; это только отмечает вид, который исчез для макета и целей рисования. Чтобы освободить память завышенного вида viewstub, вам действительно нужно было бы удалить завышенное представление и снова заменить его новым представлением для будущего использования.

+0

привет @adamp У меня есть одно сомнение. что, если я создаю один простой линейный макет и динамически добавляю в него один дочерний вид, и когда мне это не нужно, я удаляю этот дочерний вид из линейного макета таким образом, что он полностью удалит дочерний вид. Это хороший подход, когда вы хотите оптимизировать память? потому что, когда зазор над просмотром завышен, мы не можем удалить этот вид, просто сделав его GONE. – KDeogharkar

0

Да, вы можете удалить, когда захотите. Я сделал это прямо сейчас.

ViewStub stub = findById(...); 
View v = stub.inflate(); 

и установить видимость на любом мероприятии.

v.setVisibility(View.GONE); 
+1

Настройка видимости GONE не удаляет ее, она просто скрывает ее. – Pkmmte

 Смежные вопросы

  • Нет связанных вопросов^_^