Ответ 1
INVISIBLE:
Это представление невидимо, но оно все еще занимает место для целей макета.
GONE:
Это представление невидимо, и оно не требует места для компоновки.
В чем разница между invisible
и gone
для статуса видимости вида?
INVISIBLE:
Это представление невидимо, но оно все еще занимает место для целей макета.
GONE:
Это представление невидимо, и оно не требует места для компоновки.
Из Документация вы можете сказать, что
View.GONE Это представление невидимо, и оно не занимает места для макета.
View.INVISIBLE Этот вид невидим, но он по-прежнему занимает пространство для целей макета.
Позволяет очистить идею с помощью некоторых изображений.
Предположим, что у вас есть три кнопки, например ниже
Теперь, если вы установите видимость кнопки Two как невидимую (View.INVISIBLE
), тогда вывод будет
И когда вы установите видимость Button Two как ушедшего (View.GONE
), тогда вывод будет
Надеюсь, это очистит ваши сомнения.
Для ListView или GridView существует еще одна разница, когда видимость первоначально установлена на
INVISIBLE:
Функция getView() адаптера, называемая
GONE:
Функция адаптера getView() не вызывала, тем самым предотвращая загрузку представлений, когда это не нужно
НЕВИДИМО:
Вид должен быть нарисован и требуется время.
GONE:
Вид не нужно рисовать.
Я хотел бы добавить правильные и успешные ответы, что если вы инициализируете представление с видимостью как View.GONE
, представление может быть не инициализировано, и вы получите некоторые случайные ошибки.
Например, если вы инициализируете макет как View.GONE
, а затем пытаетесь запустить анимацию, по моему опыту у меня есть анимация, работающая случайным образом. Иногда да, иногда нет.
Поэтому перед обработкой (изменением размера, перемещением, каким бы то ни было) представления вы должны инициализировать его как View.VISIBLE
или View.INVISIBLE
, чтобы отобразить его (нарисовать) на экране, а затем обработать его.
View.INVISIBLE → Вид невидим, но он займет некоторое место в макете
View.GONE → Вид не отображается и не занимает какое-либо место в макете
когда вы делаете это. Пройденный каждый раз при компиляции программы компонент инициализируется, что означает, что вы удаляете компонент из макета, и когда вы делаете его невидимым, компонент будет занимать одно и то же место в макете, но каждый раз, когда вам не нужно для его инициализации.
если вы установите Visibility = Gone, тогда вы должны инициализировать компонент.. like
например, кнопка _mButton = новая кнопка (this);
_mButton = (кнопка) findViewByid (R.id.mButton);
поэтому потребуется больше времени по сравнению с Visibility = invisible.