What I'm trying to accomplish: When the user clicks a specific RadioButton, a TextView should appear immediately below the selected RadioButton.
My solution so far: Code-wise, put a TextView inside of the RadioGroup and set it's initial visibility to "invisible". Then, when a specific RadioButton is clicked, set the hidden TextView's visibility to "visible". When the RadioButton is unselected, hide the TextView. Setting the TextView's visiblity is done within an Activity class I've defined.
So, in my example XML code below, when "radio_button_one" is selected, "my_sometimes_hidden_textview" should appear. Conversely, when "radio_button_one" is deselected (or not selected), "my_sometimes_hidden_textview" should have it's visibility set to "invisible".
Question: Is putting the TextView inside of the RadioGroup valid (or, good practice)? If not, is there a better way to do what I'm trying to accomplish? I'm relatively new to Android development, so if there is something in the official Android documentation that I missed please point me to it. Thanks for the insight in advance.
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#FFFFFF"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/my_always_visible_textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This textview is always visible" />
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10px">
<RadioButton
android:id="@+id/radio_button_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Radio Button 1" />
<TextView
android:id="@+id/my_sometimes_hidden_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This should only appear when radio_button_one is selected" />
<RadioButton
android:id="@+id/radio_button_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
开发者_运维技巧 android:text="Radio Button 2" />
</RadioGroup>
</LinearLayout>
Thank you for the replies, CommonsWare and Macarse.
CommonsWare: Thanks for clarifying that a RadioGroup is a type of LinearLayout. My instincts fought against adding the TextView because most RadioGroup examples I've come across to date don't show elements other than RadioButtons present. Hence, I thought that only RadioButtons should go in RadioGroups.
Macarse:
I tried placing the TextView outside of the RadioGroup, just as you described. Your solution does work, so long as a programmer doesn't need the TextArea to appear immediately below a specific RadioButton. I haven't been able to figure out how to position the TextArea immediately below the specific RadioButton without explicitly placing the TextView inside of the RadioGroup.
Thanks for the ViewStub link. In fact, this may be the best way to accomplish what I'm trying to do overall. Along with the TextView I talked about in my question, I also wanted to add a button to appear next to the TextView only when a specific RadioButton was selected.
Is putting the TextView inside of the RadioGroup valid (or, good practice)?
RadioGroup
is just a LinearLayout
that happens to also handle RadioButton
exclusion rules (i.e., "there can only be one...checked, that is"). I see no particular problems in having a TextView
inside a RadioGroup
.
Two options:
- Doing something similar as you said but it doesn't need to be inside the
RadioGroup
. Making theTextView
visible when the user clicks on theRadioButton
. - Perhaps you can do something with a
ViewStub
. Check this link.
yeah it is possible check this method
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/radioGroup"
android:orientation="horizontal">
<RadioButton
android:id="@+id/ifsc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ifsc"
android:textAllCaps="true" />
<Textview
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/appName"
android:id="@+id/ifsc_info"
android:baselineAlignBottom="true"
android:layout_toEndOf="@+id/ifsc" />
</RadioGroup>
精彩评论