RadioButton:水平对齐3个按钮与背景

时间:2016-04-11 20:02:32

标签: android xml layout android-radiogroup

我现在遇到问题。
我有一种情况,我需要显示3个按钮,当时只能按一个按钮 我以前使用“ImageButton”,自己处理点击/未点击状态。 但是,我选择将其切换为RadioGroup,因为它应该处理这种行为 我想这样做:

  • 3个单选按钮必须在同一行。
  • 无论设备如何,用作背景的图片的比例都必须保持不变
  • 如果可能的话,无论设备如何,我都希望按钮占据相同的水平空间百分比。**

我试过,重量属性,alignParentLeft,对,硬件大小,但找不到干净的解决方案。

你能帮帮我吗?

以下是按钮:

<RadioGroup
    android:id="@+id/mobiprint_mod_radio_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RadioButton
        android:id="@+id/radio_tag"
        android:layout_width="96dip"
        android:layout_height="68dip"
        android:background="@drawable/tag_on"
        android:button="@android:color/transparent"
        android:layout_margin="0dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <RadioButton
        android:id="@+id/radio_pe"
        android:layout_width="96dip"
        android:layout_height="68dip"
        android:background="@drawable/pe_off"
        android:button="@android:color/transparent"
        android:layout_margin="0dp"
        android:layout_centerHorizontal="true"/>

    <RadioButton
        android:id="@+id/radio_a7"
        android:layout_width="96dip"
        android:layout_height="68dip"
        android:background="@drawable/a7_off"
        android:button="@android:color/transparent"
        android:layout_margin="0dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RadioGroup>

3 个答案:

答案 0 :(得分:0)

由于RadioGroup继承自LinearLayout,您可以在RadioButtons上使用权重。 在Radiogroup中,将方向设置为水平,就像使用LinearLayout一样。

<RadioButton
    android:id="@+id/radio_tag"
    android:layout_height="68dip"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:background="@drawable/tag_on"
    android:button="@android:color/transparent"
    android:layout_margin="0dp"
/>

<RadioButton
    android:id="@+id/radio_pe"
    android:layout_height="68dip"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:background="@drawable/pe_off"
    android:button="@android:color/transparent"
    android:layout_margin="0dp"
/>

<RadioButton
    android:id="@+id/radio_a7"
    android:layout_height="68dip"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:background="@drawable/a7_off"
    android:button="@android:color/transparent"
    android:layout_margin="0dp"
/>

我删除了属于RelativeLayout的那些属性。

注意:权重均为 1 ,宽度均为 0dp
这是故意的。

答案 1 :(得分:0)

尝试下面的代码。 您需要将radiogroup的Orientation定义为水平并应用weightsum以及根据您的方便应用layout_weight

<RadioGroup
    android:id="@+id/mobiprint_mod_radio_group"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:orientation="horizontal"
    android:weightSum="1">

    <RadioButton
        android:id="@+id/radio_tag"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.33"
        android:text="option A" />

    <RadioButton
        android:id="@+id/radio_pe"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.33"
        android:text="option B" />

    <RadioButton
        android:id="@+id/radio_a7"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.33"
        android:text="option C" />
</RadioGroup>

希望它适合你:)

答案 2 :(得分:0)

  • 将“无线电组”的宽度设置为match_parent或将其设置为任意宽度
  • 在两个单选按钮之间(即第一和第二之间以及第二和第三之间)添加视图(虚拟视图),并使用android:layout_weight =“ 1”

    <RadioGroup
        android:id="@+id/mobiprint_mod_radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <RadioButton
            android:id="@+id/radio_tag"
            android:layout_width="96dip"
            android:layout_height="68dip"
            android:background="@drawable/tag_on"
            android:button="@android:color/transparent" />
    
        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
        <RadioButton
            android:id="@+id/radio_pe"
            android:layout_width="96dip"
            android:layout_height="68dip"
            android:background="@drawable/pe_off"
            android:button="@android:color/transparent" />
    
        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
        <RadioButton
            android:id="@+id/radio_a7"
            android:layout_width="96dip"
            android:layout_height="68dip"
            android:background="@drawable/a7_off"
            android:button="@android:color/transparent" />
    </RadioGroup>   
    
  • 也可以使用空格代替视图

       <Space
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>