Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to evenly space out radiobuttons in Android?

I have three radiobuttons and I want to evenly space them across the screen. When I use android:layout_weight="1", the buttons are stretched out across the screen. So how would I have the same amount of space in between each of them that also scales on different screen sizes?

<RadioGroup          android:id="@+id/auton_bar"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:orientation="horizontal"         android:paddingLeft="10dp"         android:layout_below="@id/clear_fields"                 >         <RadioButton             android:id="@+id/auton_radio_1"             android:layout_height="wrap_content"             android:layout_width="wrap_content"              android:background="@drawable/auton_col"             android:layout_weight="1"              />         <!-- android:layout_marginRight="380dp"  -->          <RadioButton             android:id="@+id/auton_radio_2"             android:layout_height="wrap_content"             android:layout_width="wrap_content"              android:background="@drawable/auton_col"             android:layout_weight="1"               />         <RadioButton             android:id="@+id/auton_radio_3"             android:layout_height="wrap_content"             android:layout_width="wrap_content"              android:background="@drawable/auton_col"             android:layout_weight="1"             />      </RadioGroup> 
like image 449
rasen58 Avatar asked Mar 15 '13 22:03

rasen58


People also ask

How to group radio buttons in android Studio?

To create each radio button option, create a RadioButton in your layout. However, because radio buttons are mutually exclusive, you must group them together inside a RadioGroup . By grouping them together, the system ensures that only one radio button can be selected at a time.

How do I make sure only one radio button is selected in android Studio?

You can use android:checkedButton attribute on RadioGroup, providing the id of the RadioButton you want to be checked initially and selecting another RadioButton will clear the previous selection. Save this answer.

How to initialize radio button in android?

Open “res/layout/main. xml” file, add “RadioGroup“, “RadioButton” and a button, inside the LinearLayout . Radio button selected by default. To make a radio button is selected by default, put android:checked="true" within the RadioButton element.

What are the methods of radio button in android?

RadioButton is a two states button which is either checked or unchecked. If a single radio button is unchecked, we can click it to make checked radio button. Once a radio button is checked, it cannot be marked as unchecked by user. RadioButton is generally used with RadioGroup.


2 Answers

If you want them to share screen width equally you need to set android:layout_width="match_parent" on each View. Your xml would become:

<RadioGroup     android:id="@+id/auton_bar"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_below="@id/clear_fields"     android:orientation="horizontal"     android:paddingLeft="10dp" >      <RadioButton         android:id="@+id/auton_radio_1"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1"         android:background="@drawable/auton_col" />     <!-- android:layout_marginRight="380dp" -->      <RadioButton         android:id="@+id/auton_radio_2"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1"         android:background="@drawable/auton_col" />      <RadioButton         android:id="@+id/auton_radio_3"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1"         android:background="@drawable/auton_col" /> </RadioGroup> 

To elaborate, layout_weight can be used in two ways.

  • If you have multiple views in a vertical linear layout and you want the last one to take up all the remaining space, you can set their heights to wrap_content and give the last view a weight of 1.
  • If you want all views to share the available space, set all width/heights to 0dp or match_parent and give each view the same weight value. They will share the space equally.

To have your background drawable scale, make a new xml that goes in your drawable/ folder that looks like this

<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android"     android:gravity="center"     android:src="@drawable/auton_col" /> 

Name it whatever you like (e.g. auton_col_scale.xml) and reference that drawable as your background.

like image 200
James McCracken Avatar answered Sep 18 '22 12:09

James McCracken


I noticed that using layout weights for the RadioButton's caused them to be aligned off-center, eventhough they definitely each shared 50% of the screen (they were left-aligned). Setting a gravity for each RadioButton caused only the text to be centered /facepalm

The XML below shows how to horizontally align two radiobuttons (could be any views) and center them:

                <RadioGroup                     android:id="@+id/radiogroup"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:orientation="horizontal">                      <Space                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_weight="1"/>                      <RadioButton                         android:id="@+id/radioyes"                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:text="@string/yes"                         android:checked="false"/>                      <Space                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_weight="1"/>                      <RadioButton                         android:id="@+id/radiono"                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:text="@string/no"                         android:checked="false"/>                      <Space                         android:layout_width="wrap_content"                         android:layout_height="wrap_content"                         android:layout_weight="1"/>                  </RadioGroup> 
like image 23
Someone Somewhere Avatar answered Sep 16 '22 12:09

Someone Somewhere