Android make view 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. >
Читайте также:  Хорошие смайлики для андроид

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

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

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

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

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

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

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

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

Источник

Android — сделать TextView невидимым

Когда мое приложение запускается, пользователь должен коснуться экрана, прежде чем начнется настоящее действие. У меня есть textView , который дает подсказку коснуться экрана.

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

6 ответов

1. Всегда используйте if(something) , если хотите узнать, является ли он true/false , вместо того, чтобы писать if(something == true) [что-то является логическим значением, которому присвоено значение true.]

2. Если вы укажете свои представления XML на метод, используя android:onClick , как показано ниже,

, Какой смысл реализовывать OnGestureListener ?

Если я делаю это onCreate , я инициализирую свое мнение

3. Если я действительно хочу прикосновение, я сделаю это

  1. Теперь вы можете видеть в третьем параметре есть MotionEvent , вы можете идентифицировать движение ACTION_DOWN , ACTION_MOVE и ACTION_UP

Теперь подумайте, использовали ли вы их когда-либо. У вас в голове возникла идея касания, поэтому вы пытались использовать события касания. Но вы ими не пользуетесь. Так что он делает то же, что и onClickListner в вашем случае. Если хотите движения, используйте третий, который я дал.

Читайте также:  Поларис офис для андроид для чего

Но просто вы можете использовать

Те, кто просматривает onClickListner или setOnTouchListener , вы можете напрямую использовать их внутри onCreate или хранить их внутри метода, и вы можете вызывать этот метод из onCreate . Зачем хранить логическое значение? Ничего особенного

Обратите внимание, что я рассматривал myView как макет фона, а не textView, фон — тот, который вы нажимаете / касаетесь

Вы проверяете, коснулся ли экран в onCreate() , который вызывается только один раз в начале действия. Инициализируйте TextView глобально и установите его видимость внутри onTouch(View v, MotionEvent event) Также ваш onTouch() не верен. Вы должны переопределить public boolean onTouch(View v, MotionEvent event)

Вместо реализации OnGestureListener добавьте setOnTouchListener в ваше корневое представление вашего макета активности

Например, rlTestView — это идентификатор корневого макета вашей деятельности, затем используйте приведенный ниже код в своем методе oncreate .

Итак, теперь вы несколько раз меняли код вопросов, и я надеюсь, что это последнее изменение. Только чем мог помочь мой ответ.

Вы сделали это в своем onCreate() :

Но это выполняется напрямую и не имеет ничего общего с вашим методом onTouch() . Давайте предположим, что ваш onTouch() работает правильно. Сделайте TextView глобальным :

Инициализировать его в onCreate() :

А затем спрятать его в onTouch() :

Но вы должны быть уверены, что ваш метод onTouch() работает. Вы можете сделать Toast или Журнал для проверки. Вы должны быть уверены, что:

— TextView находится внутри вашего макета XML, который вы установили с помощью setContentView(R.layout.activity_game);

— Метод onTouch() объявлен в атрибуте xml вашего TextView

И установите для clickable вашего TextView значение true:

РЕДАКТИРОВАТЬ

Если вы реализуете onGestureListener() , я полагаю, что событие касания используется слушателем, и ваш TextView не распознал onTouch() . Если вы не обнаруживаете жесты в своей деятельности, удалите эту реализацию.

Читайте также:  Xda s21 android 12

Используйте приведенный ниже код для метода onCreate и установите yes visibility вместо GONE вместо невидимого. Также укажите текущее значение visibilty для TextView в onTouch и установите для него значение

Источник

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