Is it possible to create a RadioGroup that will hold radio buttons by 3 in a row? I've checked the internet for an implementation and I found one, but it was not working. The thing is that I need to add them programatically, and they should be grouped 3 per row.
Can someone tell me how can I populate a radioGroup with RadioButtons so they are aligned 3 per row.
Thanks
Radiogroup inherits from LinearLayout.
So, set the RadioGroup orientation attribute to "horizontal"
Radio Group inherits from the LinearLayout ViewGroup so you can make this possible by setting orientation on the viewgroup android:orientation="horizontal"
<RadioGroup
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RadioButton
android:text="Radio 1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:text="Radio 2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:text="Radio 3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
Related
I am using two linear layouts to display two rows of radio button 3 in one row and 3 in other row.I have searched and found that we should use radio group. But after using radio group also I am not able to uncheck the radio button when I select a radio button
<RadioGroup
android:id="#+id/payment_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
style="#style/LinkButton"
android:id="#+id/cash"
android:text="CASH" />
<RadioButton
style="#style/LinkButton"
android:id="#+id/card"
android:text="CARD" />
<RadioButton
style="#style/LinkButton"
android:id="#+id/pay_tm"
android:text="PAYTM" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<RadioButton
style="#style/LinkButton"
android:id="#+id/bank"
android:text="BANK" />
<RadioButton
style="#style/LinkButton"
android:id="#+id/cc_av"
android:text="CC-AV" />
<RadioButton
style="#style/LinkButton"
android:id="#+id/credit"
android:text="CREDIT" />
</LinearLayout>
</RadioGroup>
From the developers website
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.
So the direct parent of the radio button has to be the RadioGroup , in you layout file the direct parent is the LinearLayout. Remove the LinearLayout and place the radiobuttons directly under the RadioGroup.
You can't use any layout inside RadioGroup. You can use only
RadioButton, otherwise RadioButton won't work. RadioButton
should be immediate child of RadioGroup.
Your problem will be solved by changing the orientation of the radioGroup to horizontal.
More info here
For my answer you need not to use the radio group. You just have to set click listener on each radio button. For eg.
RadioButton tempRadioButton; //global variable.
radioButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
if (tempRadioButton != null){
tempRadioButton.setChecked(false);
}
tempRadioButton = (RadioButton) view;
}
});
You can also use this method to set the radio buttons on each item of list view or recyclerview.
Try to change your layout like this and do on click action refer this link:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:id="#+id/payment_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:orientation="vertical">
<RadioButton
android:id="#+id/cash"
style="#style/LinkButton"
android:text="CASH" />
<RadioButton
android:id="#+id/card"
style="#style/LinkButton"
android:text="CARD" />
<RadioButton
android:id="#+id/pay_tm"
style="#style/LinkButton"
android:text="PAYTM" />
<RadioButton
android:id="#+id/bank"
style="#style/LinkButton"
android:text="BANK" />
<RadioButton
android:id="#+id/cc_av"
style="#style/LinkButton"
android:text="CC-AV" />
<RadioButton
android:id="#+id/credit"
style="#style/LinkButton"
android:text="CREDIT" />
</RadioGroup>
</LinearLayout>
I'm new to android studio and am trying to have a 2 x 2 layout for some radio buttons. I have looked online and they're are similar question so apologies for a bit of a repeat but whatever I do I cannot seem to get mine to work. This is what I have in my xml file.
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/radioGroup">
<TableRow>
<RadioButton
android:id="#+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="#string/text1" />
<RadioButton
android:id="#+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/text2" />
</TableRow>
<TableRow>
<RadioButton
android:id="#+id/radio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/text3"/>
<RadioButton
android:id="#+id/radio4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/text4"/>
</TableRow>
</RadioGroup>
Can anyone explain why that doesn't work? It just lets me select all the buttons.
Radio Group in itself is a linear layout.
The "orientation" attribute in radio group allows you to align the radio buttons horizontally or vertically (like a linear layout). There is no need for a separate linear layout in your xml.
But, in your case because as you are trying to design them in a grid fashion,
you are not able to do the mutual exclusion logic of the Radio group
You can also refere to this for an answer
How to group a 3x3 grid of radio buttons?
how to create radio button group view in that button like horizontal in pic, i tried xml file but does found proper tag in that....
this is my xml file
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RadioGroup
android:id="#+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="#+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton" />
<RadioButton
android:id="#+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
<RadioButton
android:id="#+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton" />
</RadioGroup>
In your RadioGroup, set:
android:orientation="horizontal"
Because RadioGroup inherits from LinearLayout
The Android Documentation for Radio Groups mentions that it inherits from Linear Layout. Searching for 'orientation' turns up the android:orientation property.
The default is horizontal.
Must be one of the following constant values.
Constant Value Description
horizontal 0 Defines an horizontal widget.
vertical 1 Defines a vertical widget.
This corresponds to the global attribute resource symbol orientation.
So simply add this property to Radio Group:
android:orientation="horizontal"
I have a textview on the left side and RadioGroup on the right side. Before I put my buttons in a radio group I had the buttons on the right side of the screen. What I am doing wrong after putting it in a RadioGroup?
<RelativeLayout
android:id="#+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25" >
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="#+id/radioButton1"
android:layout_alignParentLeft="true"
android:text="#string/hair"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="#+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="#string/Yes" />
<RadioButton
android:id="#+id/radioButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="#+id/radioButton1"
android:layout_below="#+id/radioButton1"
android:text="#string/No" />
</RadioGroup>
</RelativeLayout>
All of the "align" parameters that you have set on the buttons individually (like layout_alignParentRight) are no longer valid because the buttons are inside of a RadioGroup, which is a subclass of LinearLayout. In order to right-align the group as a whole, you need to add the proper parameters to the RadioGroup itself.
Also, you may want the RadioGroup width to wrap_content instead of fill_parent. Otherwise any horizontal layout alignments you do will likely not be visible with the container trying to fill up all available space.
HTH
you can also add this to your RadioGroup and it will work fine aswell!
android:gravity="center|left"
I want to create a simple layout like the following:
(o) Radio button A
(o) Radio button B [textedit]
[x] checkbox
For that I've created the following layout.xml:
<RadioGroup
android:layout_above="#+id/RadioButton_Count"
android:id="#+id/RadioGroup01"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<RadioButton
android:layout_height="wrap_content"
android:id="#+id/RadioButton_A"
android:text="Play forever"
android:checked="true"
android:layout_width="fill_parent"
android:textSize="20sp">
</RadioButton>
<RelativeLayout
android:id="#+id/RelativeLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/RadioButton_B"
android:text="Count:"
android:textSize="20sp">
</RadioButton>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/EditText_NumCount"
android:inputType="number"
android:layout_toRightOf="#+id/RadioButton_B"
android:width="70sp" >
</EditText>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/CheckBox_StopCount"
android:text="Stop"
android:layout_below="#+id/RadioButton_B"
android:textSize="18sp">
</CheckBox>
</RelativeLayout>
</RadioGroup>
It looks right, but the problem is that the radiobuttons doesn't connect between each other, i mean that they can be both on in the same moment.
I think it's because even if they're hanging from the same the second one is inside another layout :\
Does anyone have some idea how could I make this kind of layout (Mainly the [textedit] just right the RadioButton B), getting working also the radiobuttons?
Thank you very much
You simply can't do it. I was also trying to do something similar and got stuck.
"RadioButtons have to be direct children of RadioGroup."
https://code.google.com/p/android/issues/detail?id=1214
The first thing to try is to close your RadioGroup right after you close the last RadioButton instead of at the end. A better solution is to use a RelativeLayout as the overall container. Next add your RadioGroup and both buttons and close the group. Add the other elements relative to the rest of the layout.