web-dev-qa-db-ja.com

水平方向のラジオグループ内のレイアウトを管理する

私はメインアクティビティとしてTableRowsを使用してTableLayoutを使用しています。

TableLayout内には、アクティビティ内に2つのラジオボタンを含むラジオグループがあります(ラジオグループはテーブル行内にあります)。右端のラジオボタンを右のエッジ画面に揃えたいので、「ギャップ」は(右のラジオボタンの後ではなく)左のラジオボタンと右ボタンの間にあります。つまり.

だから持っている代わりに
| (x)(x)ギャップ|

|(x)ギャップ(x)|

ここで、(x)はラジオボタンと|です。画面の端です

重力(center_horizo​​ntal)を使用して、両方のボタンを中央に配置できます(つまり、|ギャップ(x)(x)ギャップ|)が、前に述べたように、ボタンを希望どおりに分割できないようです。

17
deteego

画面全体で任意の数のボタンを水平方向に均等に配置するために必要なのは次のとおりです。

  1. RadioGroupにはAndroid:orientation="horizontal"Android:layout_width="fill_parent"が必要です
  2. 右端のボタンを除いて、各ラジオボタンにはAndroid:layout_weight="1"が必要です(画面の右端に整列させるため)。

Landscape screenshot

これを理解するのに何時間もかかりました。

これは、調査アプリ用の2つのテキストラベルと画面の右端と左端のボーナスを含むいくつかのサンプルコードです。

<RadioGroup
    Android:id="@+id/radio_group"
    Android:orientation="horizontal"
    Android:layout_below="@id/question" 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:visibility="gone"
>
    <RadioButton
        Android:id="@+id/strong_disagree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="1"
    />
    <RadioButton
        Android:id="@+id/disagree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/disagree"
    />
    <RadioButton
        Android:id="@+id/neutral_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/neutral"
    />
    <RadioButton
        Android:id="@+id/agree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/agree"
    />
    <RadioButton
        Android:id="@+id/strong_agree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="5"
    />
</RadioGroup>
<TextView
    Android:id="@+id/disagree_label"
    Android:text="@string/strongly_disagree_txt"
    Android:layout_below="@id/radio_group" 
    style="@style/TextAppearance"
    Android:visibility="gone"
    />
<TextView
    Android:id="@+id/agree_label"
    Android:text="@string/strongly_agree_txt"
    Android:layout_below="@id/radio_group" 
    Android:layout_alignParentRight="true" 
    style="@style/TextAppearance"
    Android:layout_width="wrap_content"
    Android:visibility="gone"
    />
32
Lucy

私の解決策を見つけました。ウェイトと重力の組み合わせとマージンの削除。無線グループはlayout_width = "fill_parent"を持つことができます。各ラジオボタンにはlayout_weight = "1"が必要ですが、各ラジオボタンのlayout_widthを指定して、デフォルトの「37」をオーバーライドする必要があります。これは、デフォルトのラジオボタンの画像幅です。

        <RadioGroup Android:id="@+id/overall"
        Android:layout_width="fill_parent" Android:layout_height="80dp"
        Android:gravity="center"
        Android:orientation="horizontal">

最初のボタンには次のものが必要です。

                Android:layout_weight="1"
            Android:layout_gravity="center|left"

最後のボタンには次のものが必要です。

            Android:layout_gravity="center|right"

注:すべてのボタンにはlayout_graviotyが設定されていますが、右端のボタンのlayout_weight設定はありません。

9
capn

質問が正しいことを理解している場合は、RadioGroup内の次のコードを試すこともできます。

<ToggleButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

<View
    Android:id="@+id/view1"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:layout_weight="1" />

<ToggleButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />
0
alcsan

これに対する解決策を見つけたことがありますか?私の中間的な解決策は役立つかもしれませんが、それは私にとって全体像ではありません。特定の幅を設定することでこれを行うことができましたが、これではビューを画面の幅に合わせてサイズ変更できません。

    <RelativeLayout  
    Android:id="@+id/overall_layout"
    Android:layout_width="290dp" Android:layout_height="wrap_content">

    <RadioGroup Android:id="@+id/overall"
        Android:layout_width="fill_parent" Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <RadioButton Android:id="@+id/overall_1" Android:tag="1"
            Android:button="@drawable/radio_1"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_2" Android:tag="2"
            Android:button="@drawable/radio_2"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_3" Android:tag="3"
            Android:button="@drawable/radio_3"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_4" Android:tag="4"
            Android:button="@drawable/radio_4"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_5" Android:tag="5"
            Android:button="@drawable/radio_5"
            Android:layout_width="50dp"
            Android:layout_height="wrap_content"></RadioButton>
    </RadioGroup>
    <TextView Android:text="left" Android:id="@+id/left"
        Android:layout_below="@id/overall"
        Android:layout_alignParentLeft="true"
        Android:layout_width="wrap_content" Android:layout_height="wrap_content"></TextView>
    <TextView Android:text="right" Android:id="@+id/right"
        Android:layout_below="@id/overall"
        Android:layout_alignParentRight="true"
        Android:layout_width="wrap_content" Android:layout_height="wrap_content"></TextView>
    </RelativeLayout>

最後のボタンには余白がないことに注意してください。

ラジオグループに5つのカスタムボタンを作成しようとしています。最初のボタンは左揃えで、最後のボタンは右揃えです。ボタンの幅は正確に50ピクセルであり、ボタンに個別に関連付けられたテキストは必要ありません。以下の2つのテキストは、相対レイアウトで左右揃えになっています。 「layout_gravity」を使用しても効果はなく、「layout_weight」は各ボタンの右側にパディングを追加します。これにより、右端のボタンが揃えられなくなります。

これで多くの髪を引っ張る。

0
capn