Android visibility gone invisible

Русские Блоги

Разница между атрибутами видимости VISIBLE, INVISIBLE и GONE в Android

В разработке для Android большинство элементов управления имеют атрибут видимости, а есть три атрибута: «видимый», «невидимый» и «пропавший». В основном используется для настройки отображения и скрытия элементов управления. Некоторые люди могут задаться вопросом, в чем разница между невидимым и ушедшим? ? ? Итак, с этим вопросом мы смотрим на следующее:

Это устанавливается следующим образом в файле XML и коде Java:

Видимый (видимый)

XML-файл: android: visibility = «visible»

Java-код: view.setVisibility (View.VISIBLE);

Невидимый (невидимый)

XML-файл: android: visibility = «invisible»

Java-код: view.setVisibility (View.INVISIBLE);

Спрятаться

XML-файл: android: visibility = «ушел»

Java-код: view.setVisibility (View.GONE);

Чтобы различить три, я построил Купол для демонстрации, сначала перейдем к кодексу Купола, после демонстрации я знаю разницу между ними:

  1. xml version = «1.0» encoding = «utf-8» ?>
  2. LinearLayout xmlns:android = «http://schemas.android.com/apk/res/android»
  3. android:layout_width = «fill_parent»
  4. android:layout_height = «fill_parent»
  5. android:orientation = «vertical» >
  6. LinearLayout
  7. android:layout_width = «fill_parent»
  8. android:layout_height = «wrap_content»
  9. android:orientation = «horizontal»
  10. android:layout_marginBottom = «20dip» >
  11. TextView
  12. android:layout_width = «wrap_content»
  13. android:layout_height = «wrap_content»
  14. android:layout_weight = «1»
  15. android:background = «#F00»
  16. android:text = «TextView1»
  17. android:textSize = «23sp»
  18. android:visibility = «visible»/>
  19. TextView
  20. android:id = «@+id/mainTV2»
  21. android:layout_width = «wrap_content»
  22. android:layout_height = «wrap_content»
  23. android:layout_weight = «1»
  24. android:background = «#00F»
  25. android:text = «TextView2»
  26. android:textSize = «23sp»
  27. android:visibility = «visible»/>
  28. LinearLayout >
  29. Button
  30. android:id = «@+id/mainBtn1»
  31. android:layout_width = «fill_parent»
  32. android:layout_height = «wrap_content»
  33. android:text = «TextView2 ВИДИМ»
  34. android:onClick = «mianOnClickListener»/>
  35. Button
  36. android:id = «@+id/mainBtn2»
  37. android:layout_width = «fill_parent»
  38. android:layout_height = «wrap_content»
  39. android:text = «TextView2 невидим»
  40. android:onClick = «mianOnClickListener»/>
  41. Button
  42. android:id = «@+id/mainBtn3»
  43. android:layout_width = «fill_parent»
  44. android:layout_height = «wrap_content»
  45. android:text = «TextView2 ушел»
  46. android:onClick = «mianOnClickListener»/>
  47. LinearLayout >

Пока последние три кнопки являются атрибутами, которые контролируют видимость TextView

  1. package com.chindroid.visibility;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.TextView;
  6. public class MainActivity extends Activity <
  7. /** TextView2 */
  8. private TextView mainTV2 = null ;
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) <
  11. super .onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. // Инициализируем данные
  14. initData();
  15. >
  16. / ** Метод инициализации контроля * /
  17. private void initData() <
  18. mainTV2 = (TextView)findViewById(R.id.mainTV2);
  19. >
  20. /**
  21. Метод реагирования на событие нажатия кнопки в MainActivity
  22. *
  23. * @param v
  24. */
  25. public void mianOnClickListener(View v) <
  26. switch (v.getId()) <
  27. case R.id.mainBtn1: < // Событие ответа кнопки 1
  28. // Установить TextView2 как видимый
  29. mainTV2.setVisibility(View.VISIBLE);
  30. break ;
  31. >
  32. case R.id.mainBtn2: < // Событие ответа кнопки 2
  33. // Установить TextView2 как невидимый
  34. mainTV2.setVisibility(View.INVISIBLE);
  35. break ;
  36. >
  37. case R.id.mainBtn3: < // Ответное событие кнопки 3
  38. // Установить TextView2, чтобы скрыть
  39. mainTV2.setVisibility(View.GONE);
  40. break ;
  41. >
  42. default :
  43. break ;
  44. >
  45. >
  46. >
Читайте также:  Off road drive андроид

При запуске программы оба TextViews видны

Когда мы нажимаем первую кнопку и устанавливаем для свойства TextView2visibility значение INVISIBLE, процедура выглядит следующим образом:

Когда мы нажимаем третью кнопку и устанавливаем свойство TextView2visibility в GONE, процедура выглядит следующим образом:

Когда мы снова нажмем первую кнопку и установим свойство TextView2visibility в VISIBLE, TextView2 снова будет представлен, как показано на следующем рисунке:

VISIBLE: сделать элемент управления видимым

Невидимый: установите элемент управления невидимым

GONE: установить контроль, чтобы скрыть

Основное различие между INVISIBLE и GONE заключается в следующем: когда свойство видимости элемента управления равно INVISIBLE, интерфейс резервирует пространство, занимаемое элементом управления view, а когда свойство элемента управления равно GONE, интерфейс не сохраняет пространство, занимаемое элементом управления view.

Источник

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

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

7 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Dr fone android data recovery сбросить пароль

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

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

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

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

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

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

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

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

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

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

Источник

How and why to use Android Visibility Listeners

The Android UI is built up from Views, and in a regular application, there are usually several of them. To find out which View the user is currently looking at, you need to install Visibility Listeners.

Read below to find out about the different options you have to identify the visibility status of a View.

Читайте также:  Anno 1404 для андроид

How To Become Visible

In order for our listeners to work, we must first make sure our View is found in the layout hierarchy. There are two ways this happens:

  1. Your View is already part of your layout as it is defined in an XML file
  2. You created a View dynamically, and you need to add it using the addView method

A View’s visibility status is of Integer type and can have one of three options:

  1. VISIBLE (0) — The View is visible to the user
  2. INVISIBLE (4) — The View is invisible to the user, but still takes up space in the layout
  3. GONE (8) — The View is invisible, and it does not take up space in the layout

Once inside our layout hierarchy, there are a few native options to help us know when our View’s visibility has changed.

onVisibilityChanged

This method is triggered when the visibility of the view or of an ancestor of the view has changed. The status of the visibility is found inside the visibility parameter.

onWindowVisibilityChanged

This method is triggered when the containing window of our View has changed its visibility. This does not guarantee that the window your View is in is visible to the user, as it may be obscured by another window.

Visibility Listeners In Action

To see these two listeners in action, let us create a simple project. We will have a LinearLayout with a TextView and a button. We’ll make the button’s on click action add our custom view to the layout.

Источник

Оцените статью