Android: разница между невидимой и ушла?

В чем разница между invisible и gone для статуса видимости вида?

Ответ 1

INVISIBLE:

Это представление невидимо, но оно все еще занимает место для целей макета.

GONE:

Это представление невидимо, и оно не требует места для компоновки.

Ответ 2

Из Документация вы можете сказать, что

View.GONE Это представление невидимо, и оно не занимает места для макета.

View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для целей макета.


Позволяет очистить идею с помощью некоторых изображений.

Предположим, что у вас есть три кнопки, например ниже

enter image description here

Теперь, если вы установите видимость кнопки Two как невидимую (View.INVISIBLE), тогда вывод будет

enter image description here

И когда вы установите видимость Button Two как ушедшего (View.GONE), тогда вывод будет

enter image description here

Надеюсь, это очистит ваши сомнения.

Ответ 3

Для ListView или GridView существует еще одна разница, когда видимость первоначально установлена ​​на

INVISIBLE:

Функция getView() адаптера, называемая

GONE:

Функция адаптера getView() не вызывала, тем самым предотвращая загрузку представлений, когда это не нужно

Ответ 4

НЕВИДИМО:
Вид должен быть нарисован и требуется время.

GONE:
Вид не нужно рисовать.

Ответ 5

Я хотел бы добавить правильные и успешные ответы, что если вы инициализируете представление с видимостью как View.GONE, представление может быть не инициализировано, и вы получите некоторые случайные ошибки.

Например, если вы инициализируете макет как View.GONE, а затем пытаетесь запустить анимацию, по моему опыту у меня есть анимация, работающая случайным образом. Иногда да, иногда нет.

Поэтому перед обработкой (изменением размера, перемещением, каким бы то ни было) представления вы должны инициализировать его как View.VISIBLE или View.INVISIBLE, чтобы отобразить его (нарисовать) на экране, а затем обработать его.

Ответ 6

  • View.INVISIBLE → Вид невидим, но он займет некоторое место в макете

  • View.GONE → Вид не отображается и не занимает какое-либо место в макете

Ответ 7

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

если вы установите Visibility = Gone, тогда вы должны инициализировать компонент.. like

например, кнопка _mButton = новая кнопка (this);

_mButton = (кнопка) findViewByid (R.id.mButton);

поэтому потребуется больше времени по сравнению с Visibility = invisible.