Работаем с RadioButton
Главная » Работаем с RadioButton

В этом небольшом уроке мы научимся работать с таким элементом интерфейса Android приложений, как RadioButton. RadioButton представляет из себя переключатель, который может находиться в двух состояниях, либо в активном, либо в пассивном. Мы научимся создавать определенную реакцию на смену состояния кнопок. Урок состоит из трех основных блоков: работа в layout файле, создание реакции на выбор этих кнопок, а также создание подобных возможностей программно, взамен работе в layout файле.

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

Использование элементов RadioButton происходит в их родительском контейнере по имени RadioGroup. Вид переключателей RadioButton может быть как горизонтальным, так и вертикальным. Для настройки этой опции используется атрибут android:orientation, точно так же, как и в случае работы с подобными элементами. Например, вот изображение вертикального набора переключателей RadioButton:

Также для RadioButton можно настроить такой атрибут, как android:CheckedButton. Он настраивает состояние определенного переключателя, задает, активный он или не активный. Для активности переключателя в указанной выше строке принимается значение true, неактивной - false (кстати, механизм очень похожий на ToggleButton). 

Основными атрибутами для RadioButton выступают:

-android:id - уникальный идентификатор для переключателя;

-android:text - данный атрибут настраивает для каждого переключателя текст, который будет отображаться для пользователя;

-android:onClick - атрибут для обработки нажатий по элементу

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

 <RadioGroup
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical"
 android:id="@+id/radio_group_1">
 <RadioButton
 android:id="@+id/radio_right1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Красная кнопка"
 android:checked="true"
 android:textColor="#f00"/>
 <RadioButton
 android:id="@+id/radio_left1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Зеленая кнопка"
 android:textColor="#0f0" />
 <RadioButton
 android:id="@+id/radio_ambi1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Синяя кнопка"
 android:textColor="#00f" />
 </RadioGroup>

</LinearLayout>

Окно приложения примет следующий вид:

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

<RadioButton
 android:id="@+id/radio_right1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Красная кнопка"
 android:checked="true"
 android:textColor="#f00"
 android:onClick="onRadioButtonClick"/>

Теперь переходим в файл MainActivity.java нашего приложения и добавляем туда код обработчика событий нажатия по кнопкам. Мы добавим код, при котором нажатие на любую кнопку будет вызывать всплывающее Toast сообщение с текстом, указывающим какая кнопка сейчас выбрана:

public void onRadioButtonClick(View v) {
 RadioButton button = (RadioButton) v;
 Toast.makeText(MainActivity.this,
 button.getText() + " была выбрана",
 Toast.LENGTH_SHORT).show();
 }

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

Теперь сделаем тоже самое, только программно с файла MainActivity.java. Для этого нам понадобиться прописать следующее:

RadioGroup RadioGroup = (RadioGroup) findViewById(R.id.radio_group_1);
 
OnClickListener radio_listener = new OnClickListener() {
 public void onClick(View v) {
 onRadioButtonClick(v);
 }
};
 
RadioButton button1 = new RadioButton(this);
button1.setText("Красная кнопка");
button1.setTextColor(Color.RED);
button1.setOnClickListener(radio_listener); 
RadioGroup.addView(button1);
 
RadioButton button2 = new RadioButton(this);
button2.setText("Зеленая кнопка");
button2.setTextColor(Color.GREEN);
button2.setOnClickListener(radio_listener);
RadioGroup.addView(button2);
 
RadioButton button3 = new RadioButton(this);
button3.setText("Синяя кнопка");
button3.setTextColor(Color.BLUE);
button3.setOnClickListener(radio_listener); 
RadioGroup.addView(button3);
 
RadioGroup.check(button1.getId());

Таким образом, мы сделали тоже самое, что и в первом случае, только программно. При запуске приложения видим приложение с таким же функционалом:

Категория: Уроки программирования | Просмотров: 1243 | Добавил: Oleg | Теги: кнопки, Программирование, интерфейс, Radio Button | Рейтинг: 0.0/0
Всего комментариев: 0
avatar