Как сделать элемент невидимым android studio

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

Разница между атрибутами видимости 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.

Источник

Сделать кнопку невидимой после нажатия

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

Крашится программа после нажатия на кнопку
Когда нажимаю на клавишу button2 крашится программа в чем проблема? public class Main3Activity.

Метод вызывается только после второго нажатия на кнопку
есть метод import com.github.nkzawa.emitter.Emitter; import.

После нажатия на кнопку TBitBtn сделать кнопку не действующей
Как после нажатия на кнопку bitbtn1 кнопка становилась не действушей

Теперь вроде все норм, кроме. еще одной ошибки: Session ‘app’: Error Installing APK

Добавлено через 8 минут
Хотя все никак не смогу задушить жабу (Unfortunately, //название программы// has stopped.)

Текущий код:
(Main_Activity.java)

Сделать кнопку недоступной после нажатия на определённое время
Товарищи, как сделать чтобы после нажатии кнопки она стала недоступной в течении, например, 10.

Как сделать элементы неактивными после нажатия на кнопку
Добрый день. Необходимо составить программу тест по истории. Проблема в том, что после нажатия на.

Сделать кнопку невидимой
Добрый вечер. В Qt совсем недавно, занимаюсь переделкой одной программки и возникла такая проблема.

Как сделать кнопку невидимой
Сделал БитБтн невидимым visible=false и сверху с помощью Timage поставил картинку, нужно чтобы.

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

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

Источник

Как я могу удалить кнопку или сделать ее невидимой в Android?

Как удалить кнопку на Android или сделать ее невидимой?

Установите видимость кнопки на GONE (кнопка будет полностью «удалена» – пространство кнопок будет доступно для других виджетов) или INVISIBLE (кнопка станет «прозрачной» – ее пространство не будет доступно для других виджетов):

Сначала сделайте кнопку невидимой в xml-файле. Затем установите кнопку, видимую в java-коде, если это необходимо.

Чтобы удалить кнопку в java-коде :

Для прозрачной кнопки в java-коде :

Чтобы удалить кнопку в файле Xml :

К прозрачной кнопке в файле Xml :

Это представление невидимо, и оно не требует места для компоновки.

Но если вы просто хотите сделать его невидимым:

Использовать setVisibility в кнопке или изображенииViwe или …..
Чтобы удалить кнопку в java-коде:

Читайте также:  Фильтр синего цвета андроид что это такое

К прозрачной кнопке в java-коде

Вы должны сделать вам xml-код кнопки, как показано ниже:

скрытых:
Видимость: нет
показать:
Видимость: невидимая
Видимость: видимая

Делает это видимым, если невидимым и невидимым, если видимо

Чтобы полностью удалить кнопку из родительского макета:

Элементы управления просмотром (TextView, EditText, Button, Image и т. Д.) Имеют свойство видимости. Это может быть установлено в одно из трех значений:

Видимый – отображается

Невидимый – скрытый, но зарезервированный

Gone – Скрыто полностью

Чтобы установить видимость в коде, используйте общедоступную константу, доступную в статическом классе View:

Источник

Как скрыть элемент в listview в Android

Я знаю, этот вопрос задавался раньше, но я не видел рабочего ответа на него.

есть ли способ скрыть некоторые элементы в ListView без изменения исходных данных?

Я попытался установить видимость представления элемента в gone, он больше не будет отображаться, но место, зарезервированное для этого элемента, все еще существует.

10 ответов

вы можете либо написать свой собственный ListAdapter или подкласс одного из существующих.

в своем ListAdapter , вы просто отфильтруете элементы, которые вы не хотите отображать, возвращая измененные значения для getCount() , getItem() и getItemId() по мере необходимости.

Я пробовал несколько решений, в том числе setVisibitlity(View.GONE) и раздувание по умолчанию null view но все они имеют общую проблему, и это разделители между скрытыми элементами сложены и делают плохое видимое серое пространство в больших списках.

если ListView стоит CursorAdapter тогда лучшее решение-обернуть его CursorWrapper .

Итак, мое решение (на основе ответа @ RomanUsachev здесь) является это:

FilterCursorWrapper

когда Cursor готово, кормить FilterCursorWrapper с желаемым индексом столбца

и если вы делаете фильтрацию и сортировку, не забудьте использовать FilterCursorWrapper везде:

и для обновления списка достаточно запросить с пустым фильтром:

и вы сделали, просто изменив логику isHidden метод, вы контролируете, чтобы показать или скрыть скрытые элементы. И преимущество в том, что вы не видите нежелательных разделителей. 🙂

Если вы хотите скрыть пункт такой:

не может быть AbsListView.LayoutParams (-1,0);

Если convertview повторно используется, Вы должны добавить это ниже, чтобы установить его высоту назад:

в некоторых случаях у вас есть простое решение :

Я должен скрыть представление в виде списка, потому что элементы для заполнения являются недействительными, поэтому я не хочу видеть вид :

в моем адаптере список :

у меня есть CursorAdapter Это не может быть изменено с помощью резервного массива, потому что проверка того, должен ли элемент отображаться или нет, была после получения результата из базы данных. Я реализовал решение в bindView(View v, Context context, Cursor c) в аналогичном методе, как было описано в других сообщениях. Я думаю что лучший способ переопределения bindView() метод, а потом getView(int position, View convertView, ViewGroup parent) потому что вы должны нести около null-ckecking для convertView в getView().
второе: Я пытался скрыть View v in bindView(View v, Context context, Cursor c) и это не сработало. После расследования я понял, что мне нужно спрятаться каждый элемент в вид (включая макеты, содержащие текст, изображения и т. д.)

Читайте также:  Самые популярные модели телефонов андроид

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

но, как говорит серетур, правильный подход-удалить элемент и использовать notifyDataSetChanged() . Почему это решение не подходит в вашем случае?

Если вы создаете свой собственный adapter вы можете сделать это public View getView(int position, View convertView, ViewGroup parent) метод. Это может быть полезно в случае, если вы планируете, чтобы показать невидимые элементы в какой-то момент. Например:

надеюсь, это поможет

простой способ решить эту проблему для меня, просто проанализируйте и проверьте свой список в действии перед вызовом метода «setAdapter», например:

Источник

Как скрыть элементы RecyclerView

Я хочу скрыть некоторые элементы RecyclerView, как показано на рисунке. При нажатии кнопки «Просмотреть все» макет должен раскрыться, а остальные элементы должны быть видны.

Всего в RecyclerView 12 элементов. Один ряд должен быть скрыт.

Я пытался сделать элементы невидимыми в начале и установить их видимыми при нажатии view all путем вызова метода.

В адаптере я пробовал это

Но я не могу создать экземпляр ViewHolder в методе view all . А также создаются пустые места, где элементы невидимы. Любые другие методы, которые вы считаете лучше?

3 ответа

Добавьте переменную int maxCount = 8 и измените код на этот:

И измените maxCount на Просмотреть все .

AFAIK на Android, вы не можете скрыть / показать элементы в recycleView (оптимизированным способом) без изменения списка источников элементов. (я имею в виду динамическое удаление / добавление элементов в определенной позиции, начале, середине или конце списка)

Тем не менее, изменение источника данных и обновление списка с таким небольшим количеством элементов довольно легко и может быть сделано с помощью простого notifyDataSetChanged

В Activity/Fragment создайте экземпляр вашего списка с помощью переменной class-scoped . Я пишу пример в Activity , так как я не знаю, используете ли вы Activity или Fragment . Обь это будет то же самое с fragment .

Затем, когда вы захотите изменить элементы списка, просто обновите свой ArrayList ( или список или любой другой ) и сообщите адаптеру, что что-то изменилось.

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

Обратите внимание, я написал это вручную без компилятора, это может быть не идеально.

Сообщите мне, помогло ли это!

Определить локальную переменную

Отображать, как в вашем коде

В viewAll наборе методов count = 12 и обновите адаптер через слушатель для активности

Источник

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