Android spinner не отображает значение

Содержание
  1. Spinner
  2. Общая информация
  3. Используем адаптер
  4. В закрытом состоянии
  5. В раскрытом состоянии
  6. За честные выборы! — что выбрал пользователь
  7. Предупредить компонент об изменении пунктов
  8. Найти позицию по слову
  9. Тонкая настройка — своя разметка для Spinner
  10. spinner.xml
  11. spinner_dropdown_item.xml
  12. Программная настройка цвета и размера текста для первой строчки
  13. Не выбирать элемент при запуске
  14. CustomAdapter.java
  15. Режим android:spinnerMode=»dialog»
  16. Русские Блоги
  17. Значение Android Spinner не отображается, список выбора нормальный
  18. Значение Android Spinner не отображается, список выбора нормальный
  19. текст
  20. 1. Сначала посмотрите на результаты
  21. 2. Анализ и процесс
  22. Spinner не отображает выбранное значение
  23. ОТВЕТЫ
  24. Ответ 1
  25. Ответ 2
  26. Ответ 3
  27. Проблема:
  28. Причина:
  29. Решение:
  30. XML (Предпочитаемый):
  31. Код (менее надежный):
  32. Ответ 4
  33. Ответ 5
  34. Ответ 6
  35. Ответ 7
  36. Ответ 8
  37. Ответ 9
  38. Ответ 10
  39. Ответ 11
  40. Ответ 12
  41. Ответ 13
  42. Ответ 14
  43. Ответ 15
  44. Ответ 16
  45. Ответ 17
  46. Ответ 18
  47. Ответ 19
  48. Spinner не отображает выбранное значение
  49. Проблема:
  50. Причина:
  51. Решения:
  52. XML (желательно):
  53. Код (менее надежный):

Spinner

Общая информация

Компонент Spinner из раздела Containers (раньше был в разделе Widgets) похож на выпадающий список (ComboBox), используемый в OC Windows (не путать с игрушкой Fidget Spinner). В закрытом состоянии компонент показывает одну строчку, при раскрытии выводит список в виде диалогового окна с переключателями.

Сначала покажу быстрый способ использования элемента. При добавлении элемента на экран отображается просто полоска со строкой Item1. В основном настройка происходит программным путём. Но можно и через XML. Добавим в строковый файл ресурсов strings.xml несколько элементов массива:

Теперь осталось в атрибуте android:entries указать на созданный массив и компонент Spinner будет заполнен данными. Запустите проект и проверьте.

Цвет компонента можно задать в атрибуте android:background=»@color/colorAccent».

Внешний вид компонента в разных версиях Android менялся.

Если нужно из программы узнать, какой пункт из выпадающего списка выбран в Spinner, то можно использовать такой код, например, при нажатии кнопки:

Если нужен не текст, а номер позиции, то вызывайте метод getSelectedItemPosition()

Если вам нужно получить выбранный элемент сразу в момент выбора, то используйте метод setOnItemSelectedListener(), который описан ниже.

Используем адаптер

Как и в случае с компонентом ListView, Spinner использует адаптер данных для связывания содержимого из набора данных с каждым пунктом в списке. Для загрузки данных нужно:

  • Получить экземпляр компонента Spinner
  • Настроить адаптер данных для связывания
  • Вызвать метод setAdapter()

В закрытом состоянии

В раскрытом состоянии

Данные в закрытом и раскрытом состоянии Spinner отображает по разному. Поэтому необходимо создавать макеты шаблонов для обоих состояний. Android предоставляет несколько своих собственных ресурсов для Spinner для простых задач. Например, есть ресурс android.R.layout.simple_spinner_item для создания представления для каждого элемента списка. Ресурс android.R.layout.simple_spinner_dropdown_item служит шаблоном для раскрывающего списка.

Создадим строковый массив в файле strings.xml:

Загрузим строковый массив с именем animals в экземпляр класса ArrayAdapter при помощи метода createFromResource():

Запустив программу, вы увидите работающий пример, как на картинках, представленных выше.

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

За честные выборы! — что выбрал пользователь

Нам интересно узнать, что именно выбрал пользователь из списка и обработать эту информацию.

Нам нужно получить выбранный пользователем пункт в компоненте Spinner при помощи метода setOnItemSelectedListener() и реализовать метод onItemSelected() класса AdapterView.OnItemSelectedListener:

Теперь при выборе любого пункта вы получите всплывающее сообщение о выбранном пункте. Обратите внимание, что нам также пришлось реализовать вызов обратного вызова onNothingSelected().

В начале статьи показывался более простой способ с использованием метода getSelectedItem(), который достаточен для большинства случаев.

Читайте также:  Что такое handler андроид

Предупредить компонент об изменении пунктов

Если в приложении вы изменили состав выпадающего списка, то необходимо сообщить компоненту Spinner, чтобы он показывал обновлённый список. Сделать это можно при помощи метода адаптера notifyDataSetChanged().

Найти позицию по слову

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

Тонкая настройка — своя разметка для Spinner

Вы можете установить собственный фон, но не можете установить, к примеру, цвет и размер текста в настройках свойств. В предыдущих примерах мы видели, что при подключении к адаптеру используются системные разметки android.R.layout.simple_spinner_item и android.R.layout.simple_spinner_dropdown_item. Ничто не мешает вам посмотреть исходники данных файлов и создать файлы для собственной разметки, которые потом можно подключить к адаптеру.

Давайте создадим собственную разметку с значками. В папке res/layout создаём файл row.xml:

Осталось в коде заменить две строки на одну:

В примере использовался один общий файл, но можете создать два отдельных шаблона для закрытого и раскрытого вида элемента. Например, так (простейший вариант):

spinner.xml

spinner_dropdown_item.xml

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

Программная настройка цвета и размера текста для первой строчки

В сети нашёл пример программной установки цвета и размера текста для первой строчки элемента в закрытом состоянии. Может кому пригодится.

Не выбирать элемент при запуске

Иногда хочется, что при запуске не выбирался первый элемент списка, как это происходит по умолчанию. Решение в лоб — добавить первым элементом пустую строку или текст «Выберите. » не слишком красив, так как при раскрытии списка мы увидим эти элементы, которые только портят картину. В сети нашёл вариант, использующий собственный адаптер.

CustomAdapter.java

Попробуйте этот вариант, может он подойдёт вам.

Режим android:spinnerMode=»dialog»

У компонента есть атрибут android:spinnerMode, у которого можно установить значение dialog. В этом случае при раскрытии списка задняя активность затемняется. Это хорошо заметно на белом фоне. Проверьте самостоятельно.

В этом режиме диалога для компонента Spinner можно вывести заголовок с помощью методов setPrompt() или setPromptId(). Заголовок выводится при раскрытии списка.

Источник

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

Значение Android Spinner не отображается, список выбора нормальный

Значение Android Spinner не отображается, список выбора нормальный

Этот редактор Markdown изменен с [StackEdit] [6], и ведение блога с ним принесет новый опыт:

  • 1. В процессе разработки проекта эта проблема есть только у мобильного телефона Xiaomi.
  • 2. Я пытался использовать AppCompatSpinner и проблема до сих пор не решена
  • Вывод: другие не сталкивались с этим, может быть, сам Миуи изменил стиль Spinner

текст

1. Сначала посмотрите на результаты

1. Сначала посмотрите на рендеринг


2. Отображение нормальных визуализаций

2. Анализ и процесс

1. Анализ
Учитывая, что другие мобильные телефоны могут показать, что этот Xiaomi 4 не отображается на руке, это может быть связано с тем, что места, выделенного Spinner, недостаточно для отображения. Все значения ширины были изменены на wrap_content, а ширина «адреса доставки» субтитров также была уменьшена. Конечным результатом теста было то, что они все еще не отображались. Отображался только последний Spinner, но отображалось только слово, а затем … .. Если вы посмотрите на это так, у нас есть проблема со стилем системы android.R.layout.simple_spinner_item. Этот Spinner был изменен miui.Занимайте больше места для отображенияТогда встает вопрос, у нас только такое большое пространство, как с этим бороться?
ОтветИспользуйте пользовательские стили,Уменьшите TextSize TextView, который отвечает за отображение внутри Spinner

Читайте также:  Seasonhit для android tv

Файл: R.layout.simple_spinner_item

Таким образом, при инициализации адаптера

Использовать локальный файл макета для изменения textize = «16sp»

Скомпилируйте и запустите, результат правильный .

Источник

Spinner не отображает выбранное значение

Я применил spinner, заполнив список массивов через базу данных. Я могу получить и показать список массивов в моем адаптере массива spinner, но если я выберу элемент в spinner, он не будет показан в spinner? Что я здесь ошибся?

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

Может кто-нибудь помочь мне с PLS.

ОТВЕТЫ

Ответ 1

Этот ответ может быть немного глупым, но попробуйте. Это сработало для меня.

  • Проверьте цвет фона вашего счетчика!
  • И если это белый цвет, измените его
  • Наслаждайтесь этим!

Ответ 2

Я получил ту же проблему и решил, добавив notifyDataSetChanged() после привязки данных в Spinner.

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

просто добавьте adapter.notifyDataSetChanged(); после обновления списка.

Надеюсь, это будет полезно.

Ответ 3

Проблема:

Spinner не отображает значение по умолчанию или выбранное значение. Но выпадающие пункты меню отображаются при выборе.

Причина:

Фон и цвет текста оба белого цвета.

Решение:

XML (Предпочитаемый):

Напишите пользовательский макет для элемента spiner и используйте его вместо стандартного, android.R.layout.simple_spinner_item .

Код (менее надежный):

Android нуждается в каком-то крупном обновлении, или, может быть, дротик и флаттер должны перенести.

Ответ 4

Используйте wrap_content для высоты Spinner .

Возможно, ему не хватает высоты для отображения текста.

Ответ 5

если у вас есть пользовательский адаптер, вы должны изменить цвет текста TextView

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

Ответ 6

Хорошо, это также происходит, если контекст не задан должным образом. Я использовал getApplicationContext() , где ему нужно getBaseContext() .

Ответ 7

Проверьте эти ссылки:

Повторите попытку, чтобы сохранить его при выборе элемента:

Ответ 8

используйте атрибут android:spinnerMode=»dropdown» в объявленном элементе Spinner xml

Ответ 9

Ответ 10

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

Ответ 11

Проблема с тем, что я нашел, это с таблицей стилей. Используйте этот

Для макета xml используйте этот

И, наконец, для класса

Ответ 12

попробуйте этот код == >

Ответ 13

Этот ответ может быть немного глупым, но если вы сделаете ту же ошибку, попробуйте. сначала установите значения в свой ArrayList, а затем назначьте этот массивList для вращения. Я объявил глобальный список массивов и сначала установил его, а затем добавил значения к нему из другого метода. в то время я столкнулся с той же проблемой. В противном случае вы можете сделать notifyDataSetChanged() в своем списке arrayList.

Ответ 14

Для меня проблема в том, что я использовал getApplicationContext() . Когда я заменяю getApplicationContext() на this , он работает нормально.

Ответ 15

Wierd. У меня такая же проблема. Что я сделал, чтобы заставить его работать: 1. Добавьте некоторые начальные данные в список (например, —, пожалуйста, выберите — -) 2. Загрузите оставшиеся данные и добавьте их в список 3. Вызовите adapter.notifyDatasetChaged()

Читайте также:  Always has been wallpaper android

Ответ 16

У меня просто была эта проблема, и после попытки всех перечисленных решений выяснилось, что проблема была в том, что я установил spinner layout_width на 60dp.

Изменил его на fill_parent и проблема решена.

Ответ 17

Вы должны использовать первый Spinner для получения значений.

Попробуйте использовать следующий код:

Что вы делаете, так это получение значения по умолчанию для счетчика.

Ответ 18

Попробуйте этот код

Ответ 19

Вы должны сделать некоторые изменения как:

Он отобразит выбранное значение соответствующим образом. Выбранный цвет выбран по умолчанию для ваших приложений.

Источник

Spinner не отображает выбранное значение

Я применил spinner, заполнив список массивов через базу данных. Я могу получить и показать список массивов в моем адаптере массива spinner, но если я выберу элемент в spinner, он не будет показан в spinner? Что я ошибся здесь?

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

Может ли кто-нибудь мне помочь?

Этот ответ может быть немного глупым, но попробуйте. Это сработало для меня.

  1. Проверьте цвет фона вашего прядильщика!
  2. И если это белое изменение
  3. Наслаждайся этим!

Я получил notifyDataSetChanged() же проблему и решил, добавив notifyDataSetChanged() после привязки данных в Spinner.

Прежде всего, у меня есть адаптер привязки с Blank ArrayList затем получает список элементов с сервера и добавлен в этот список, но забыл notifyDataSetChanged() после обновленного списка.

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

Проблема:

Spinner не отображает значение по умолчанию или выбранное значение. Но выпадающие пункты меню отображаются при выборе.

Причина:

Цвет фона и текста как белый!

Решения:

XML (желательно):

Напишите пользовательский макет для элемента spiner и используйте его вместо стандартного файла android.R.layout.simple_spinner_item .

Как изменить размер шрифта и цвет текста?

Код (менее надежный):

Android нуждается в каком-то крупном обновлении или, может быть, в дроте и флаттере.

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

Если у вас есть пользовательский адаптер, вы должны изменить цвет текста TextView

И если у вас нет пользовательского адаптера, вы должны просто изменить фон с прядильщиками

Вы должны использовать первый Spinner для получения значений.

Попробуйте следующий код:

То, что вы делаете, это получение значения по умолчанию для счетчика.

Проверьте эти ссылки:

Else, попробуйте сохранить его при выборе элемента:

Использовать android:spinnerMode=»dropdown» атрибут в объявленном элементе элемента Spinner элемента

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

Проблема с тем, что я нашел, была с таблицей стилей. Используйте это

Для макета xml используйте это

И, наконец, для класса

Попробуйте этот код

попробуй это:-
ArrayAdapter stateNameAdaptor = новый ArrayAdapter (это, android.R.layout.simple_list_item_1, stateNameList); stateNameAdaptor.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); spnState.setAdapter (stateNameAdaptor);

Этот ответ может быть немного глупым, но если вы сделаете ту же ошибку, попробуйте … сначала установите значения в свой ArrayList, а затем назначьте этот массивList для вращения. Я объявил глобальный массивList и сначала установил его для spinner, а затем добавил значения к нему из другого метода … в то время я столкнулся с той же проблемой. В противном случае вы можете сделать notifyDataSetChanged () в своем списке arrayList.

Вы должны сделать некоторые изменения как:

Он будет выделять выбранное значение соответствующим образом. Выбранный цвет выбран по умолчанию для ваших приложений.

Источник

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