アプリケーションのタブとしてラジオボタンを使用しています。
画像を読み込んでいますが、左側に揃えています。それらを中央に揃える方法。
これは私の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>
各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"
を適切に中央に配置するには、いじる必要がありますが、これにより、目的の操作を実行できます。今回はレイアウトをコピーしてテストしたので、知っています動作します! :)
以前にも同様の問題がありましたが、わかりましたので、説明させていただきます。
上の写真は私のアプリのスクリーンショットです。ご覧のとおり、同じことを行いました。メニューの位置合わせ画面の下部があり、RadioGroupとその中に3つのRadionButtonがあります。各メニューアイコンをRadionButtonの中央に位置合わせします。 9-patch)は、ボタンチェックイベントがトリガーされたときに一緒に表示されます。
最初に使用したAndroid:button属性は描画可能なセレクターを指し、セレクターにはチェックとチェック解除の間に2つの描画可能な状態がありますが、メニューアイコンを揃えることができません中央に配置し、RadioButtonで影の画像を塗りつぶすと、次のようになります。
RadionButtonにAndroid:layout_gravity = centerとAndroid: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構成で作業を終了しましょう。学習して使用する必要があります。
空のビューを使用して、ラジオボタン間のスペースを均等に埋めることができます。この場合、中央に表示される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>
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>
RadioGroupタグにAndroid:gravity = "center"を配置します。これは動作します。
<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>
上記のすべてを試しましたが、機能しません。
私は共有したいより良い解決策を見つけました。ボタンを@null
に設定します;次に、ドローアブルをAndroid:drawableTop
またはその他のタイプの位置に追加します。これにより、ドローアブルをradioButtonの他の位置に設定できます。 padding
またはdrawablePadding
を追加して、ボタン/テキストのどの側にもくっつかないようにします。
Android:background="@drawable/background_Paint"
Android:drawableTop="@drawable/shape"
Android:button="@null"
私の場合、ラジオボタンの内容は正しく配置されていました。 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>
RadioGroup
にAndroid:layout_gravity="center_horizontal"
を追加してみてください。
私の場合は反対側にあり、Android:paddingLeft = "0dp"を配置しただけで機能したので、ラジオボタンにはAndroid:paddingRight = "0dp"を試してみてください。
RadioGroup
でこの行を使用しましたが、正常に機能しています。
Android:gravity="center|left"