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



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

879   7  

7 ответов:

невидимка:

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

ушли:

этот вид невидим, и он не занимает никакого места для целей компоновки.

С документация можно и так сказать

вид.Ушел этот вид невидим, и он не занимает никакого места для цели макета.

вид.Невидимый этот вид невидим, но он по-прежнему занимает место для целей компоновки.


позволяет очистить идею с фотографии.

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

enter image description here

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

enter image description here

и когда вы устанавливаете видимость кнопки два как ушел (View.GONE), то выход будет

enter image description here

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

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

невидимка:

функция getView () адаптера называется

ушли:

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

невидимка:
вид должен быть нарисован, и это требует времени.

ушли:
вид не должен быть нарисован.

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

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

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

  • вид.Невидимый->вид невидим, но он будет занимать некоторое пространство в макете

  • вид.Ушел->вид не виден, и он не будет занимать никакого места в макете

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

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

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

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

Так что это займет больше времени по сравнению с Visibility = invisible.

Comments

    Ничего не найдено.