A custom radio button can also be implemented in Android, other than the default user interface of android RadioButton. It is usually used to create a more attractive user interface.
Example of Custom RadioButton:
activity_main.xml: (File: activity_main.xml)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Select One" android:textStyle="bold" android:layout_marginLeft="10dp" android:textSize="20dp"/> <!-- add RadioGroup which contain the many RadioButton--> <RadioGroup android:layout_marginTop="50dp" android:id="@+id/groupradio" android:layout_marginLeft="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content"> <!-- In RadioGroup create the 1 Radio Button--> <!-- like this we will add some more Radio Button--> <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/radia_id1" android:text="A" android:textSize="20dp"/> <RadioButton android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/radia_id2" android:text="B" android:textSize="20dp"/> </RadioGroup> <!-- add button For Submit the Selected item--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Select" android:id="@+id/submit" android:textStyle="bold" android:textSize="20dp" android:layout_marginTop="200dp" android:layout_marginLeft="180dp" /> <!-- add clear button for clear the selected item--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clear" android:id="@+id/clear" android:textSize="20dp" android:textStyle="bold" android:layout_marginTop="200dp" android:layout_marginLeft="20dp" /> </RelativeLayout> |
Activity class: (File: MainActivity.java)
package com.example.radioapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private RadioGroup radioGroup; Button submit, clear; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); submit = (Button)findViewById(R.id.submit); clear = (Button)findViewById(R.id.clear); radioGroup = (RadioGroup)findViewById(R.id.groupradio); // Uncheck or reset the radio buttons initially radioGroup.clearCheck(); // Add the Listener to the RadioGroup radioGroup.setOnCheckedChangeListener( new RadioGroup .OnCheckedChangeListener() { @Override // The flow will come here when // any of the radio buttons in the radioGroup // has been clicked // Check which radio button has been clicked public void onCheckedChanged(RadioGroup group, int checkedId) { // Get the selected Radio Button RadioButton radioButton = (RadioButton)group .findViewById(checkedId); } }); // Add the Listener to the Submit Button submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // When submit button is clicked, // Ge the Radio Button which is set // If no Radio Button is set, -1 will be returned int selectedId = radioGroup.getCheckedRadioButtonId(); if (selectedId == -1) { Toast.makeText(MainActivity.this, "No answer has been selected", Toast.LENGTH_SHORT) .show(); } else { RadioButton radioButton = (RadioButton)radioGroup .findViewById(selectedId); // Now display the value of selected item // by the Toast message Toast.makeText(MainActivity.this, radioButton.getText(), Toast.LENGTH_SHORT) .show(); } } }); // Add the Listener to the Submit Button clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Clear RadioGroup // i.e. reset all the Radio Buttons radioGroup.clearCheck(); } }); } } |
Output: