web-dev-qa-db-ja.com

画面の中央にラジオボタンを配置する方法

アプリケーションのタブとしてラジオボタンを使用しています。

画像を読み込んでいますが、左側に揃えています。それらを中央に揃える方法。

enter image description here

これは私のXMLファイルがどのように見えるかです

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:id="@Android:id/tabhost" 
  Android:layout_width="fill_parent"
  Android:layout_height="fill_parent">

  <LinearLayout Android:orientation="vertical"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent">

    <FrameLayout Android:id="@Android:id/tabcontent"
      Android:layout_width="fill_parent" 
      Android:layout_height="wrap_content"
      Android:layout_weight="1" 
      Android:padding="20dip" 
      Android:background="#fff"/>

    <RadioGroup Android:layout_width="fill_parent"
      Android:layout_height="wrap_content" 
      Android:orientation="horizontal"
      Android:checkedButton="@+id/allcontacts"
      Android:id="@+id/contactgroup">


      <RadioButton Android:id="@+id/allcontacts" 
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:layout_gravity="center" 
      Android:layout_weight="1"/>

      <RadioButton
          Android:id="@+id/categories"
          Android:layout_width="wrap_content"
          Android:layout_height="wrap_content"
          Android:layout_gravity="center"
          Android:layout_weight="1"/>

      <RadioButton Android:id="@+id/favourites" 
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:layout_gravity="center" 
      Android:layout_weight="1" />

    </RadioGroup>

    <TabWidget Android:id="@Android:id/tabs"
      Android:layout_width="fill_parent" 
      Android:layout_height="wrap_content"
      Android:layout_weight="0" Android:visibility="gone" />
  </LinearLayout>
</TabHost>
14
Naruto

各RadioButtonのxmlでAndroid:gravity="center"を試してください。

あなたはwrap_contentだと思いますので、理論的には何もする必要はありませんが、アイコンが均等に分割されているように見えます。RadioGroupがスペースを均等に分割しているため、Android:gravityを使用すると効果があります。

一撃の価値があると思います。

[〜#〜]編集[〜#〜]

これを試して:

  <RadioButton Android:id="@+id/allcontacts" 
  Android:layout_width="0dp"
  Android:layout_height="wrap_content"
  Android:layout_gravity="center"
  Android:marginLeft="20dp" 
  Android:gravity="center"
  Android:layout_weight="1"/>

Android:marginLeft="20dp"を適切に中央に配置するには、いじる必要がありますが、これにより、目的の操作を実行できます。今回はレイアウトをコピーしてテストしたので、知っています動作します! :)

11
Barak

以前にも同様の問題がありましたが、わかりましたので、説明させていただきます。

runtime screenshot

上の写真は私のアプリのスクリーンショットです。ご覧のとおり、同じことを行いました。メニューの位置合わせ画面の下部があり、RadioGroupとその中に3つのRadionButtonがあります。各メニューアイコンをRadionButtonの中央に位置合わせします。 9-patch)は、ボタンチェックイベントがトリガーされたときに一緒に表示されます。
最初に使用したAndroid:button属性は描画可能なセレクターを指し、セレクターにはチェックとチェック解除の間に2つの描画可能な状態がありますが、メニューアイコンを揃えることができません中央に配置し、RadioButtonで影の画像を塗りつぶすと、次のようになります。

enter image description here

RadionButtonにAndroid:layout_gravity = centerAndroid:gravity = centerを含めてみましたが、効果がありませんでした。その後、同僚からAndroid:button属性は背景ではなく前景を参照していると言われ、Android:backgroundを使用しますAndroid:buttonの代わりに機能し、以下は私のコードです:

<RadioGroup Android:layout_width="match_parent" Android:layout_height="60dp"
        Android:orientation="horizontal" Android:background="@drawable/menu_bg">

    <RadioButton Android:layout_width="0dp" Android:layout_height="match_parent"
                 Android:layout_weight="1" Android:button="@null" Android:checked="true"
                 Android:background="@drawable/menu_item_selector" />

    <RadioButton Android:layout_width="0dp" Android:layout_height="match_parent"
                 Android:layout_weight="1" Android:button="@null"
                 Android:background="@drawable/menu_item_selector" />

    <RadioButton Android:layout_width="0dp" Android:layout_height="match_parent"
                 Android:layout_weight="1" Android:button="@null"
                 Android:background="@drawable/menu_item_selector" />

</RadioGroup>

menu_item_selectorは、gravity設定があるため、重要です。

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@drawable/menu_item_layer_list" Android:state_checked="true" />
    <item Android:drawable="@drawable/menu_item_layer_list" Android:state_pressed="true" />
    <item>
        <bitmap Android:src="@drawable/menu_item_off" Android:gravity="center" />
    </item>
</selector>

ユーザーがボタンの状態をオンにすると、シャドウの背景画像とアイコンのアクティブ状態の画像の2つの画像を描画する必要があったため、レイヤーリストを使用して実装しました。アクティブなアイコンにも重力設定、以下はmenu_item_layer_listコードです:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@drawable/menu_bg_pressed" />
    <item>
        <bitmap Android:src="@drawable/menu_item_on" Android:gravity="center" />
    </item>
</layer-list>

私は常にそれをビューとして実装し、自分自身を描くので、ソリューションが完璧であったかどうかはわかりません。 Android SDKが提供するより便利なコンポーネントであるxml構成で作業を終了しましょう。学習して使用する必要があります。

26
VinceStyling

空のビューを使用して、ラジオボタン間のスペースを均等に埋めることができます。この場合、中央に表示される3つのラジオボタンがあります。

<RadioGroup
            Android:id="@+id/radioGroup1"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="horizontal" >

            <View
                Android:layout_width="0dip"
                Android:layout_height="wrap_content"
                Android:layout_weight="1" />

            <RadioButton
                Android:id="@+id/radio0"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center"
                Android:gravity="center"
                Android:text="" />

            <View
                Android:layout_width="0dip"
                Android:layout_height="wrap_content"
                Android:layout_weight="1" />

            <RadioButton
                Android:id="@+id/radio1"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center"
                Android:checked="true"
                Android:gravity="center"
                Android:text="" />

            <View
                Android:layout_width="0dip"
                Android:layout_height="wrap_content"
                Android:layout_weight="1" />

            <RadioButton
                Android:id="@+id/radio2"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center"
                Android:gravity="center"
                Android:text="" />

            <View
                Android:layout_width="0dip"
                Android:layout_height="wrap_content"
                Android:layout_weight="1" />
        </RadioGroup>
17
Bolling

RadioButtonをFrameLayout内に配置し、それらを中央に配置することができます。

<RadioGroup
    Android:id="@+id/radioGroup1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@color/gray_percent"
    Android:orientation="horizontal" >

    <FrameLayout
        Android:layout_width="0dip"
        Android:layout_height="wrap_content" 
         Android:layout_weight="1">

        <RadioButton
            Android:id="@+id/radio0"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal"

            Android:button="@drawable/rb_temp1"
            Android:checked="true"
            Android:gravity="center" />
    </FrameLayout>

    <FrameLayout
        Android:layout_width="0dip"
        Android:layout_height="wrap_content" 
         Android:layout_weight="1">

        <RadioButton
            Android:id="@+id/radio0"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center_horizontal"

            Android:button="@drawable/rb_temp1"
            Android:gravity="center" />
    </FrameLayout>

</RadioGroup>
4
ODAXY

RadioGroupタグにAndroid:gravity = "center"を配置します。これは動作します。

1
gustavomcastro
 <RadioGroup
    Android:id="@+id/radioGroup1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:gravity="center_horizontal"
    Android:orientation="horizontal" >
       <RadioButton
        Android:id="@+id/rb1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="One"/>

        <RadioButton
        Android:id="@+id/rb2"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Two"/>
 </RadioGroup>
1
Urvi Jasani

上記のすべてを試しましたが、機能しません。

私は共有したいより良い解決策を見つけました。ボタンを@nullに設定します;次に、ドローアブルをAndroid:drawableTopまたはその他のタイプの位置に追加します。これにより、ドローアブルをradioButtonの他の位置に設定できます。 paddingまたはdrawablePaddingを追加して、ボタン/テキストのどの側にもくっつかないようにします。

Android:background="@drawable/background_Paint"
Android:drawableTop="@drawable/shape"
Android:button="@null"
1
Lee Yi Hong

私の場合、ラジオボタンの内容は正しく配置されていました。 Android:backgroundを@nullや色などの値に設定して、中央に揃えます。以下は私のレイアウトでした

<LinearLayout
    Android:id="@+id/tab"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:orientation="horizontal" >

    <RadioGroup
        Android:paddingTop="5dp"
        Android:id="@+id/radioGroupAsTab"
        Android:layout_width="match_parent"
        Android:layout_height="50dp"
        Android:layout_gravity="center_vertical|center_horizontal"
        Android:gravity="center_vertical|center_horizontal"
        Android:background="@color/v3_header_bg"
        Android:fadingEdge="none"
        Android:orientation="horizontal" >

        <RadioButton
            Android:id="@+id/rbDiagnose"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:background="@null"
            Android:button="@null"
            Android:checked="true"
            Android:drawableTop="@drawable/v3_tab_diagnose"
            Android:layout_gravity="center_vertical|center_horizontal"
            Android:gravity="center_vertical|center_horizontal"
            Android:text="@string/tabCaption_health_maintenance"
            Android:textColor="@color/radio_astab_changecolor"
            Android:textSize="10sp"
            Android:textStyle="bold" />

        <RadioButton
            Android:id="@+id/rbHistory"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:background="@null"
            Android:button="@null"
            Android:drawableTop="@drawable/v3_tab_history"
            Android:layout_gravity="center_vertical|center_horizontal"
            Android:gravity="center_vertical|center_horizontal"
            Android:text="@string/tabCaption_history"
            Android:textColor="@color/radio_astab_changecolor"
            Android:textSize="10sp"
            Android:textStyle="bold" />

        <RadioButton
            Android:id="@+id/rbChart"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:background="@null"
            Android:button="@null"
            Android:drawableTop="@drawable/v3_tab_chart"
            Android:layout_gravity="center_vertical|center_horizontal"
            Android:gravity="center_vertical|center_horizontal"
            Android:text="@string/tabCaption_graph"
            Android:textColor="@color/radio_astab_changecolor"
            Android:textSize="10sp"
            Android:textStyle="bold" />

        <RadioButton
            Android:id="@+id/rbCyclopedia"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:background="@null"
            Android:button="@null"
            Android:drawableTop="@drawable/v3_tab_encyclopedia"
            Android:layout_gravity="center_vertical|center_horizontal"
            Android:gravity="center_vertical|center_horizontal"
            Android:text="@string/tabCaption_encyclopedia"
            Android:textColor="@color/radio_astab_changecolor"
            Android:textSize="10sp"
            Android:textStyle="bold" />

        <RadioButton
            Android:id="@+id/rbSetting"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:background="@null"
            Android:button="@null"
            Android:drawableTop="@drawable/v3_tab_setting"
            Android:layout_gravity="center_vertical|center_horizontal"
            Android:gravity="center_vertical|center_horizontal"
            Android:text="@string/tabCaption_info"
            Android:textColor="@color/radio_astab_changecolor"
            Android:textSize="10sp"
            Android:textStyle="bold" />
    </RadioGroup>
</LinearLayout>
1
user3213649

RadioGroupAndroid:layout_gravity="center_horizontal"を追加してみてください。

1

私の場合は反対側にあり、Android:paddingLeft = "0dp"を配置しただけで機能したので、ラジオボタンにはAndroid:paddingRight = "0dp"を試してみてください。

0
kostikus

RadioGroupでこの行を使用しましたが、正常に機能しています。

Android:gravity="center|left" 
0
bofredo