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

Как я могу удалить кнопку или сделать ее невидимой в 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 и обновите адаптер через слушатель для активности

Источник

Как скрыть один элемент в Android Spinner

Я ищу способ скрыть один элемент в виджере Android spinner. Это позволит вам моделировать счетчик без выбранных элементов и гарантирует, что обратный вызов onItemSelected() всегда вызывается для каждого выбранного элемента (если скрытый элемент является «текущим» ). Обычно в счетчике всегда есть один элемент, который не генерирует обратный вызов, а именно текущий.

Читайте также:  Андроид самсунг галакси все модели

В stackoverflow имеется некоторый код для отключения элементов (серого), но не для того, чтобы скрыть объекты полностью, как если бы они не существовали.

После долгих экспериментов я придумал несколько хакерских решений, которые работают на разных старых и новых платформах Android. У этого есть некоторые незначительные косметические недостатки, которые трудно заметить. Я все равно хотел бы услышать о более официальном решении, кроме «не делай этого с помощью счетчика».

Это всегда скрывает первый элемент в счетчике, но его можно довольно легко расширить, чтобы скрыть произвольный элемент или более одного элемента. Добавьте фиктивный элемент, содержащий пустую строку в начале списка элементов-счетчиков. Вы можете захотеть установить текущий выбор счетчика на элемент 0 перед открытием диалога счетчика, который будет имитировать невыбранный счетчик.

Пример установки Spinner с переопределением метода ArrayAdapter:

ОТВЕТЫ

Ответ 1

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

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

(Я не проверял код) надеюсь, что это помогает.

Ответ 2

Легче скрыть элемент в конце списка, обрезая список.

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

Ответ 3

Чтобы скрыть какой-либо элемент в раскрывающемся списке счетчиков, вам необходимо передать позицию элемента, которая должна быть скрыта на основании требуемых критериев. Я достиг этого в прецеденте, скрывающем элемент, который выбран из раскрывающегося списка

И настройка адаптера примерно такая

При выборе некоторых элементов в раскрывающемся меню также необходимо изменить положение

Ответ 4

Просто для интереса, я сделал решение использовать «Подскажите» в качестве подсказки. Этот код создан для Xamarin.Android , но он может быть отлично портирован на Java за 10 минут. Используйте его как простой ArrayAdapter , не добавляя в исходный массив индексированные или индексированные по индексу числа. Он также устанавливает SpinnerGeolocation.SelectedItemId в -1, когда ничего не выбрано ( hint — текущий элемент).

Ответ 5

Я нашел это решение, которое решило мою проблему.

Ответ 6

Я думаю, что лучше разместить проверку в списке массивов, а не на Spinner, потому что, как только элемент будет отфильтрован, его можно будет добавить в Spinner

Ответ 7

Еще один подход, который лучше всего подходит для меня, — это вернуть новый пустой объект. Это значительно чистый подход, поскольку вы не играете с элементами массива.

Создайте класс адаптера, расширяющий ArrayAdapter

внутри вашего метода

Ответ 8

Это очень старый вопрос, но я нашел хороший (и, вероятно,) чистый способ не показывать первые элементы. Вдохновленный ответом @Romich, я добавил похожую логику, чтобы пропустить первый пункт (ы).

Это эффективно скрывает произвольное количество элементов (1 по умолчанию). Код сообщает только о том, что размер отображаемых объектов короче, чем он есть на самом деле, а также изменяет индекс отображаемых элементов, поэтому мы пропускаем произвольное количество элементов.

Для простоты я исключил решение, которое в настоящее время использую, которое поддерживает скрытие списка случайных элементов, но этим легко можно управлять с помощью нескольких настроек кода.

Ответ 9

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

Читайте также:  Android windows или ios планшет

И я согласен с Akhilesh, что лучше фильтровать этот элемент на этапе ArrayList.

Источник

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() . Если вы не обнаруживаете жесты в своей деятельности, удалите эту реализацию.

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

Источник

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