如何在Android中均匀地分隔出单选button?

我有三个单选button,我想均匀地将它们放在屏幕上。 当我使用android:layout_weight="1" ,button在屏幕上延伸出来。 那么我怎么能在他们之间有相同数量的空间,也可以在不同的屏幕尺寸上进行缩放?

 <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> 

Solutions Collecting From Web of "如何在Android中均匀地分隔出单选button?"

如果你想要他们平均分享屏幕宽度,你需要在每个View上设置android:layout_width="match_parent" 。 你的xml会变成:

 <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> 

详细说来, layout_weight可以用两种方式使用。

  • 如果在垂直线性布局中有多个视图,并且您希望最后一个占据所有剩余空间,则可以将它们的高度设置为wrap_content ,并使最后一个视图的权重为1。
  • 如果您希望所有视图共享可用空间,请将所有宽度/高度设置为0dpmatch_parent并为每个视图指定相同的权重值。 他们将平等分享空间。

要使您的背景可绘制缩放,请在您的drawable/文件夹中创build一个如下所示的新xml

 <?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" /> 

将它命名为任何你喜欢的(例如auton_col_scale.xml)和引用作为背景的drawable。

我注意到使用RadioButton的布局权重导致它们偏离了中心,尽pipe它们确实每个都共享了50%的屏幕(它们是左alignment的)。 为每个RadioButton设置引力只会导致文本居中/ facepalm

下面的XML显示了如何水平alignment两个单选button(可以是任何视图)并居中:

  <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>