Android studio radiobutton установить

RadioButton и RadioGroup

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

Компоненты RadioButton (переключатель) используются в составе контейнера RadioGroup. Обратите внимание на два момента. Первое — в контейнер RadioGroup можно включать не только RadioButton, но и другие элементы, например, TextView. Второе — переключатели работают в своём контейнере, т.е. если у вас два контейнера RadioGroup, то переключатели из одного контейнера не влияют на поведение переключателей второго контейнера.

Методы

Основным методом для переключателя является toggle(), который инвертирует состояние переключателя. Также представляют интерес методы isChecked(), который возвращает состояние кнопки, и setChecked(), изменяющий состояние кнопки в зависимости от параметра.

Для уведомления о переходе положения переключателя в активное или неактивное состояние в результате определённых событий, нужно вызывать метод setOnCheckedChangeListener() с применением слушателя OnCheckedChangeListener.

Программное добавление переключателя

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

Добавление картинок к переключателю

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

Через атрибут drawableRight и ему подобных:

Программно через метод setCompoundDrawables(left, top, right, bottom):

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

Пример с переключателями

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

Создадим простейшую разметку на основе LinearLayout. Заполним форму текстовым блоком определённого цвета и присвоим ему текст «Текущий цвет». В нижней части формы расположим четыре цветных текстовых блока, а под ними четыре переключателя, с помощью которых мы будем менять цвет основного текстового блока.

Обратите внимание, что элементы RadioButton помещаются в контейнер RadioGroup. Если теперь посмотреть на форму, то увидим одно большое серое поле. А снизу расположились в ряд четыре метки, а ещё ниже также в ряд расположились четыре переключателя. Причём последний серый переключатель имеет выбранный статус (android:checked=»true»).

Переходим к программной части. Добавляем слушатель для обработки щелчков на кнопках-переключателях.

Запустим приложение и посмотрим, что у нас получилось. Пощёлкаем по переключателям и убеждаемся, что всё работает.

Слушатель OnCheckedChangeListener

Показанный выше способ использует щелчок, так как переключатели можно рассматривать как кнопки. Но на самом деле у переключателей есть свой слушатель OnCheckedChangeListener. Я расположил в новом проекте RadioGroup с тремя RadioButton и написал простенький пример.

Читайте также:  Создание vpn подключения android

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

Обратите внимание, что метод onCheckedChanged() принимает параметр RadioGroup, что позволяет применять один и тот же слушатель OnCheckedChangeListener() для нескольких групп переключателей. Вариант -1 сработает, когда группа переключателей будет сброшена в коде с помощью метода clearCheck().

Метод clearCheck()

Когда пользователь выберет любой из переключателей, то он уже не сможет снять с него отметку. Какой-нибудь из переключателей обязательно будет выбран в одном контейнере с ним. Единственный способ очистить все переключатели — программно вызвать метод clearCheck(), который относится к классу RadioGroup.

Метод getCheckedRadioButtonId(): Узнать выбранный элемент

У RadioGroup есть также метод getCheckedRadioButtonId(), который позволяет узнать идентификатор выбранного переключателя. Можем узнать выбранный переключатель через нажатие кнопки.

Также можно узнать индекс выбранного переключателя через метод indexOfChild():

Кот или муж?

Теперь, когда вы познакомились с новым элементом, то вам не составит труда написать программу для нелёгкого выбора.

Девушки, нужен ли вам такой муж? Если он не любит котиков, то будет ли любить вас? Возьмите лучше котёнка. Он клёвый.

Собственные стили

Если вы используете стандартный проект, то переключатели будут использовать цвета Material Design, в частности цвет colorAccent для кружочка с точкой.

В файле res/values/styles.xml добавим строки:

Свойство colorControlNormal отвечает за окружность в невыбранном состоянии, а colorControlActivated за точку и окружность в выбранном состоянии.

Присваиваем созданный стиль атрибуту android:theme:

Теперь цвета флажков изменились.

Собственный вид

Если вас не устраивает стандартный вид элементов RadioButton, то не составит никакого труда реализовать свои представления о дизайне.

В папке res/drawable создаём файл radiobutton_selector.xml:

Также необходимо подготовить два изображения для двух состояний — выбран и не выбран.

Осталось прописать селектор в элементе RadioButton при размещении на экране (атрибут android:button):

Готово! Можете запускать проект и проверять работу переключателей.

Источник

Android | Как добавить радио кнопки в приложении для Android?

Предпосылки:

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

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

Как создать приложение для Android для использования кнопок радио

Этот пример поможет разработать приложение для Android, которое создает радио-кнопки в соответствии с примером, показанным выше:

    Шаг 1. Сначала создайте новое приложение для Android. Это создаст файл XML «activity_main.xml» и файл Java «MainActivity.Java». Пожалуйста, ознакомьтесь с предварительными условиями, чтобы узнать больше об этом шаге.

  • Шаг 2: Откройте файл «activity_main.xml» и добавьте следующие виджеты в Относительный макет :
    • TextView для отображения сообщения с вопросом
    • RadioGroup, чтобы держать опцию Radio Buttons, которые являются возможными ответами
    • 4 RadioButtons, чтобы держать ответ каждый.
    • Кнопка «Отправить» и «Очистить» для сохранения ответа.

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

    Здесь приведены следующие идентификаторы:

    • RadioGroup: groupradio
    • RadioButton1: radia_id1
    • RadioButton2: radia_id2
    • RadioButton3: radia_id3
    • RadioButton4: radia_id4
    • Кнопка «Отправить»: отправить
    • Кнопка «Очистить»: очистить

    Это сделает пользовательский интерфейс приложения.

    Читайте также:  Android studio apk файл не устанавливается

    Источник

    как установить проверенную радиокнопку программно (радиокнопка создана динамически) на андроид

    Но работает только 4-я кнопка радио. Я пытаюсь создать радио кнопку динамически. Я создаю радиобутон внутри цикла for, затем сохраняю значение радиокнопки. Затем восстановите значение переключателя (это означает, что у меня есть 4 варианта, на этот раз я выбираю 2-й вариант и сохраняю его, затем восстанавливаю его (setChecked 2-й вариант)), но это только 4-й вариант setChecked.

    Создать радио кнопку.

    Попробуйте восстановить это

    3 ответа

    Сначала установите идентификаторы для вашего RadioButtons

    Теперь просто используйте ваш RadioGroup , чтобы проверить желание RadioButton с его ID

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

    Это потому, что вы добавляете все свои RadioButton в RadioGroup. Когда кнопка RadioButton включена в RadioGroup, кнопка RadioButton будет отключена. В документации RadioGroup четко сказано:

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

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

    Выбор идентифицируется уникальным идентификатором переключателя, как определено в файле макета XML.

    Источник

    RadioButton

    RadioButton представляет собой ещё один элемент списка, аналогичный CheckBox. Однако в отличие от него, RadioButton обладает двумя отличиями:

    1. RadioButton должен находиться в специальном контейнере RadioGroup.
    2. Если в наборе может быть выбрано несколько CheckBox, то RadioButton может быть выбран только один.

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

    Перед тем, как создать RadioButton, нужно в коде разметки добавить контейнер RadioGroup.

    Добавить в контейнер RadioButton можно двумя способами: через XML и программно.

    1. Добавление через XML

    Для этого в коде разметки внутри нужно добавить .

    С помощью атрибута android:text можно задать текст, описывающий действие, происходящее при выборе пункта списка.

    2. Добавление программно

    Аналогично первому способу, сначала нужно добавить в разметку RadioGroup о задать ему идентификатор. После этого определяем его в коде разметки.

    Теперь нужно создать экземпляры RadioButton и добавить их в контейнер с помощью метода addView().

    Как видно, с помощью метода setText() можно задать текст для элемента. Получить текст можно с помощью метода getText().

    Оба способа в результате создадут список из трёх элементов.

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

    Или в коде активности:

    Узнать, выбран ли элемент списка, можно с помощью метода isChecked(), который вернёт true, если элемент выбран, и false — не выбран.

    Обрабатывать нажатия на элементы списка можно тремя разными способами:

    1. Метод android:onClick

    Аналогично любым другим компонентам, в XML можно задать атрибут android:onClick и передать в него имя метода, обрабатывающего нажатия.

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

    • быть public
    • возвращать void
    • принимать в качестве единственного параметра экземпляр класса View

    Затем в этом методе можно определять идентификатор нажатого элемента и выполнять соответствующие операции.

    2. Метод setOnClickListener()

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

    Затем этот слушатель назначается кнопкам с помощью метода setOnClickListener().

    3. Метод setOnCheckedChangeListener()

    Предыдущий метод отслеживает сами нажатия, однако существует также метод setOnCheckedChangeListener(), который отслеживает изменение выбранного элемента в контейнере RadioGroup.

    Читайте также:  Wifi password root android

    На всех трёх способах мы заранее знаем идентификаторы нажатых элементов. Однако если идентификатор нужно получить программно, это можно сделать с помощью метода getCheckedRadioButtonId().

    При необходимости, можно изменить цвет кружка со стандартного на какой-либо другой. Для этого в папке res/values/styles.xml нужно создать новый стиль. Возьмём, например, основной цвет приложения.

    После этого в коде разметки для RadioButton нужно добавить атрибут android:theme и указать созданный стиль.

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

    Источник

    Adding custom radio buttons in android

    I am trying to get radiobutton effect for regular buttons in android

    I have a simple android radio button below

    Code for this is ::

    activity_main.xml

    How to customize it as below::

    Thanks !

    [EDIT] using code from one of the answers

    But the button name is overshadowed by the select option how to remove it ?

    more changes

    Finall changes should atleast i should know which button i have selected out of three radio buttons . is it possible to get as below ?

    11 Answers 11

    Add a background drawable that references to an image, or a selector (like below), and make the button transparent:

    If you would like your radio buttons to have a different resource when checked, create a selector background drawable:

    In the selector above, we reference two drawables, a and b , here’s how we create them:

    res/drawable/a.xml — Selected State

    res/drawable/b.xml — Regular State

    I have updated accepted answer and removed unnecessary things.

    I have created XML for following image.

    Your XML code for RadioButton will be:

    radio_flat_selector.xml for background selector:

    radio_flat_selected.xml for selected button:

    radio_flat_regular.xml for regular selector:

    All the above 3 file code will be in drawable/ folder.

    Now we also need Text Color Selector to change color of text accordingly.

    radio_flat_text_selector.xml for text color selector

    (Use color/ folder for this file.)

    Note: I refereed many answers for this type of solution but didn’t found good solution so I make it.

    Hope it will be helpful to you.

    Use the same XML file format from Evan’s answer, but one drawable file is all you need for formatting.

    And your separate drawable file:

    Setting android:background and android:button of the RadioButton like the accepted answer didn’t work for me. The drawable image was being displayed as a background(eventhough android:button was being set to transparent ) to the radio button text as

    so gave radiobutton as the custom drawable radiobuttonstyle.xml

    and radiobuttonstyle.xml is as follows

    and after this radiobutton with custom button style worked.

    You must fill the «Button» attribute of the «CompoundButton» class with a XML drawable path (my_checkbox). In the XML drawable, you must have :

    Don’t forget to replace my_checkbox by your filename of the checkbox drawable , checkbox_not_checked by your PNG drawable which is your checkbox when it’s not checked and checkbox_checked with your image when it’s checked.

    For the size, directly update the layout parameters.

    In order to hide the default radio button, I’d suggest to remove the button instead of making it transparent as all visual feedback is handled by the drawable background :

    Also it would be better to use styles as there are several radio buttons :

    Best way to add custom drawable is:

    Shadow overlay by custom drawable is removed here.

    Источник

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