web-dev-qa-db-ja.com

Androidでラジオボタンを均等に配置する方法

3つのラジオボタンがあり、それらを画面全体に均等に配置したいと考えています。 Android:layout_weight="1"を使用すると、ボタンが画面全体に拡大されます。では、それぞれの間に同じサイズのスペースを確保し、異なる画面サイズで拡大縮小するにはどうすればよいでしょうか。

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

それらに画面幅を均等に共有させたい場合は、各ViewAndroid: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は2つの方法で使用できます。

  • 垂直線形レイアウトに複数のビューがあり、最後のビューが残りのすべてのスペースを占めるようにしたい場合は、それらの高さをwrap_contentに設定し、最後のビューに1の重みを付けることができます。
  • すべてのビューで使用可能なスペースを共有する場合は、すべての幅/高さを0dpまたはmatch_parentに設定し、各ビューに同じ重み値を指定します。彼らはスペースを均等に共有します。

背景にドローアブルスケールを設定するには、drawable/フォルダーに次のような新しい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など)、そのドローアブルを背景として参照します。

44
James McCracken

RadioButtonのレイアウトウェイトを使用すると、レイアウトのウェイトが中央からずれて配置されていましたが、それぞれが画面の50%を共有していました(左揃えでした)。各RadioButtonに重力を設定すると、テキストのみが中央揃えになります/ facepalm

以下のXMLは、2つのラジオボタン(任意のビューであってもかまいません)を水平方向に配置し、中央に配置する方法を示しています。

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