Разница между <include>и <ViewStub>в Android - PullRequest
19 голосов
/ 04 июля 2011

В чем различия между тегом <\ include> и тегом <\ ViewStub> и какой из них предпочтительнее при разработке макета.

Спасибо,
venu

Ответы [ 4 ]

26 голосов
/ 04 июля 2011

будет просто включать содержимое xml в ваш базовый xml-файл, как если бы все это было просто одним большим файлом. Это хороший способ разделить части макета между различными макетами.

немного отличается, потому что он не включен напрямую и будет загружен только тогда, когда вы действительно используете его / нуждаетесь в нем, т.е. когда вы устанавливаете его видимость на VISIBLE (фактически видимый) или INVISIBLE (все еще не видно, но его размер больше не равен 0). Это хорошая оптимизация, потому что у вас может быть сложный макет с множеством маленьких представлений или заголовков в любом месте, и при этом ваша активность будет загружаться очень быстро. Как только вы используете одно из этих представлений, оно будет загружено.

10 голосов
/ 06 августа 2013
3 голосов
/ 29 июля 2012

Совместное использование и повторное использование макетов в Android очень просто благодаря тегу, иногда даже слишком простому, и вы можете получить пользовательские интерфейсы с большим количеством представлений, некоторые из которых используются редко.К счастью, Android предлагает особый виджет под названием ViewStub, который дает вам все преимущества, не загрязняя ваш пользовательский интерфейс редко используемыми представлениями.

ViewStub - это тупой и легкий вид.У него нет измерения, он ничего не рисует и никак не участвует в макете.Это означает, что ViewStub очень дешев, чтобы его раздувать, и очень дешево хранить в иерархии представлений.ViewStub лучше всего описать как ленивое включение.Макет, на который ссылается ViewStub, раздувается и добавляется в пользовательский интерфейс только тогда, когда вы решите.

0 голосов
/ 04 июня 2015

Другое важное отличие связано с раздувкой макета.При этом невозможно изменить макет, уже статически накачанный в XML, необходимо заменить представление и программно установить все параметры макета.С его помощью можно определить (например, высоту, ширину и т. Д.) И раздувать другой макет во время выполнения

...