В чем разница между invisible
и gone
для статуса видимости вида?
Android: разница между невидимой и ушла?
Ответ 1
INVISIBLE:
Это представление невидимо, но оно все еще занимает место для целей макета.
GONE:
Это представление невидимо, и оно не требует места для компоновки.
Ответ 2
Из Документация вы можете сказать, что
View.GONE Это представление невидимо, и оно не занимает места для макета.
View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для целей макета.
Позволяет очистить идею с помощью некоторых изображений.
Предположим, что у вас есть три кнопки, например ниже
Теперь, если вы установите видимость кнопки Two как невидимую (View.INVISIBLE
), тогда вывод будет
И когда вы установите видимость Button Two как ушедшего (View.GONE
), тогда вывод будет
Надеюсь, это очистит ваши сомнения.
Ответ 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.