有什么方法可以更改 RadioButton 的布局并仍然让 RadioGroup 识别它?
我需要的是布局将包含几个 EditText 字段,以便当用户选择该按钮时,这些字段将变为活动状态。我知道我可以基于 LinearLayout 构建自定义部分并使用以下方法设置我自己的布局: (LinearLayout) LayoutInflater.from(context).inflate(R.layout.my_layout, this, true) 但不知道该怎么做与单选按钮相同。
我尝试过在 RadioGroup 之外设置额外字段并将它们与按钮对齐的选项,但它根本不起作用。它似乎过于依赖设备。
这是原始布局的样子:
<RadioGroup
android:id="@+id/time_selector_radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/time_selector_hours_prompt"
android:layout_below="@id/time_selector_hours_prompt"
android:layout_alignParentRight="true"
android:gravity="right"
android:orientation="vertical"
android:checkedButton="@+id/time_selector_first_radio"
>
<RadioButton
android:id="@+id/time_selector_first_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@drawable/radio_button_selector"
/>
<RadioButton
android:id="@+id/time_selector_second_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@drawable/radio_button_selector"
/>
<RadioButton
android:id="@+id/time_selector_third_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@drawable/radio_button_selector"
/>
<RadioButton
android:id="@+id/time_selector_hours_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@drawable/radio_button_selector"
/>
</RadioGroup>
<TextView
android:id="@+id/time_selector_all_day_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/time_selector_radio_group"
android:layout_below="@id/time_selector_hours_prompt"
android:layout_marginTop="11dip"
android:text="@string/time_all_day"
/>
<TextView
android:id="@+id/time_selector_before_noon_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/time_selector_radio_group"
android:layout_below="@id/time_selector_all_day_prompt"
android:layout_marginTop="19dip"
android:text="@string/time_before_noon"
/>
<TextView
android:id="@+id/time_selector_after_noon_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/time_selector_radio_group"
android:layout_below="@id/time_selector_before_noon_prompt"
android:layout_marginTop="19dip"
android:text="@string/time_after_noon"
/>
<TextView
android:id="@+id/time_selector_starting_time_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/time_selector_starting_date_prompt"
android:layout_below="@id/time_selector_after_noon_prompt"
android:layout_marginTop="20dip"
android:layout_marginLeft="2dip"
android:text="@string/advanced_time_selector_dialog_starting_time_prompt"
/>
<EditText
android:id="@+id/time_selector_starting_time"
android:layout_width="@dimen/advanced_time_selector_edit_texts_width"
android:layout_height="wrap_content"
android:layout_alignRight="@id/time_selector_starting_date"
android:layout_alignBaseline="@id/time_selector_starting_time_prompt"
android:textSize="14sp"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:gravity="center"
android:singleLine="true"
android:maxWidth="@dimen/advanced_time_selector_edit_texts_width"
android:background="@drawable/text_field_bg"
android:inputType="datetime"
/>
<TextView
android:id="@+id/time_selector_ending_time_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/time_selector_ending_date_prompt"
android:layout_alignBottom="@id/time_selector_starting_time_prompt"
android:layout_alignBaseline="@id/time_selector_starting_time_prompt"
android:layout_marginRight="2dip"
android:layout_marginLeft="2dip"
android:text="@string/ending_date_prompt"
/>
<EditText
android:id="@+id/time_selector_ending_time"
android:layout_width="@dimen/advanced_time_selector_edit_texts_width"
android:layout_height="wrap_content"
android:layout_alignRight="@id/time_selector_ending_date"
android:layout_alignBaseline="@id/time_selector_ending_time_prompt"
android:textSize="14sp"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:gravity="center"
android:singleLine="true"
android:maxWidth="@dimen/advanced_time_selector_edit_texts_width"
android:background="@drawable/text_field_bg"
android:inputType="datetime"
/>
请注意,该按钮没有任何文本,它被添加到 TextView 中,以便我们可以将它放在左侧。正在发生的事情是文本正在“爬行”。
所以,我把它改成这样:
<RadioGroup
android:id="@+id/time_selector_radio_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/time_selector_hours_prompt"
android:layout_below="@id/time_selector_hours_prompt"
android:layout_alignParentRight="true"
android:layout_marginRight="30dip"
android:gravity="right"
android:orientation="vertical"
android:checkedButton="@+id/time_selector_first_radio"
>
<RadioButton
android:id="@+id/time_selector_all_day_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@null"
android:drawableRight="@drawable/radio_button_selector"
android:text="@string/time_all_day"
android:textColor="@color/content_text_color"
/>
<RadioButton
android:id="@+id/time_selector_before_noon_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@null"
android:drawableRight="@drawable/radio_button_selector"
android:text="@string/time_before_noon"
android:textColor="@color/content_text_color"
/>
<RadioButton
android:id="@+id/time_selector_after_noon_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@null"
android:drawableRight="@drawable/radio_button_selector"
android:text="@string/time_after_noon"
android:textColor="@color/content_text_color"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/time_selector_hours_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:button="@null"
android:drawableRight="@drawable/radio_button_selector"
android:layout_alignParentRight="true"
android:text="@string/advanced_time_selector_dialog_starting_time_prompt"
android:textColor="@color/content_text_color"
android:layout_marginLeft="-1dip"
android:paddingLeft="-1dip"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_toLeftOf="@id/time_selector_hours_radio"
android:layout_alignParentLeft="true">
<EditText
android:id="@+id/time_selector_starting_time"
android:layout_width="@dimen/advanced_time_selector_edit_texts_width"
android:layout_height="wrap_content"
android:textSize="14sp"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:gravity="center"
android:singleLine="true"
android:maxWidth="@dimen/advanced_time_selector_edit_texts_width"
android:background="@drawable/text_field_bg"
android:layout_alignParentRight="true"
android:layout_alignBaseline="@id/time_selector_hours_radio"
android:inputType="datetime"
/>
<TextView
android:id="@+id/time_selector_ending_time_prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="2dip"
android:layout_marginLeft="2dip"
android:text="@string/ending_date_prompt"
android:layout_alignBaseline="@id/time_selector_hours_radio"
android:layout_toLeftOf="@id/time_selector_starting_time"
/>
<EditText
android:id="@+id/time_selector_ending_time"
android:layout_width="@dimen/advanced_time_selector_edit_texts_width"
android:layout_height="wrap_content"
android:textSize="14sp"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:gravity="center"
android:singleLine="true"
android:maxWidth="@dimen/advanced_time_selector_edit_texts_width"
android:layout_toLeftOf="@id/time_selector_ending_time_prompt"
android:layout_alignBaseline="@id/time_selector_hours_radio"
android:background="@drawable/text_field_bg"
android:inputType="datetime"
/>
</RelativeLayout>
</RelativeLayout>
</RadioGroup>
它仍然不完美,当然,它也不承认它是一个 RadioGroup。
我想去扩展 RadioButton 的方向,但不知道如何改变那里的布局。