Cómo alinear el botón de radio en el centro de la pantalla

Estoy usando los botones de radio como pestaña en mi aplicación.

He cargado imágenes para ello, pero se están alineando hacia el lado izquierdo. Cómo hacerlos alinear en el centro.

Introduzca aquí la descripción de la imagen

Así es como se ve mi archivo 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> 

Pruebe con android:gravity="center" en el xml para cada RadioButton.

Veo que usted es wrap_content, así que teóricamente no debería hacer nada, pero parece que los iconos están divididos de manera uniforme, tal vez el RadioGroup divide el espacio de manera uniforme con el android: la gravedad tendrá un efecto.

Vale la pena un tiro supongo.

EDITAR

Prueba esto:

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

Tendrás que jugar con el android:marginLeft="20dp" para conseguirlo correctamente centrado, pero eso te permitirá hacer lo que buscas hacer. Copié su diseño y probado esta vez, así que que funciona! 🙂

Tuve un problema similar antes, lo descubro, así que trato de explicarlo para usted.

Captura de pantalla de tiempo de ejecución

Como se puede ver, yo también hice lo mismo, tuve un menú alinear la parte inferior de la pantalla, son un RadioGroup y tres RadionButton dentro de él, quiero que cada icono de menú alinee el centro de RadionButton, la imagen de sombra 9-parche) mostrados juntos cuando se dispara el evento de control Button.
Al principio, usé android: el atributo button se refiere a un selector drawable, el selector tiene dos estado drawable entre check y uncheck, pero no puedo alinear el centro de iconos de menú y hacer que la imagen de sombra se llene por RadionButton, se parece a ella:

Introduzca aquí la descripción de la imagen

Traté de incluir android: layout_gravity = centro y android: gravedad = centro con el RadionButton, pero también no tuvo efecto. Después de eso, mi compañero de trabajo me dijo que el androide: botón atributo se refiere a los conocimientos adquiridos en lugar de fondo, entonces yo uso android: fondo en lugar de android: botón y funcionó, a continuación es mi código:

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

El menu_item_selector es importante porque tenía un ajuste de gravedad :

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

La causa de que tenía dos imágenes para dibujar cuando el usuario a su vez Estado del botón está marcada, la imagen de fondo de sombra y el icono de la imagen de estado activo, por lo que utiliza la lista de capas para implementarlo, el icono activo también había gravedad configuración, a continuación es menu_item_layer_list código:

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

No sé que la solución fue perfecta o no, porque siempre la implemento como una vista y dibujo a mí mismo. Pero creo que Android SDK suministrado componente más conveniente vamos a terminar el trabajo con la configuración de xml, debemos aprender y utilizarlo.

Puede utilizar vistas vacías para llenar upp el espacio de forma uniforme entre los botones de opción. En este caso tengo 3 botones de radio que parecen centrados, agradables y ordenados.

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

Usted podría poner su RadioButton dentro de FrameLayout y centrarlos:

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

En mi caso, mis contenidos de botón de radio estaban alineados a la derecha. Los dejo alinear el centro por el sistema androide: el fondo sea un cierto valor, tal como @null o un cierto color. Abajo estaba mi diseño

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

Poner android: gravity = "center" en la etiqueta de RadioGroup. Esto funciona.

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

Prueba a añadir un android:layout_gravity="center_horizontal" en tu RadioGroup .

¡ RadioGroup esta línea en mi RadioGroup y está trabajando muy bien!

 android:gravity="center|left" 

He intentado todo lo anterior y no funciona.

Había encontrado una mejor solución que me gustaría compartir. Establezca su botón en @null ; A continuación, agregue el dibujable a android:drawableTop o cualquier otro tipo de posición. Esto nos permitirá establecer los drawables en otra posición del radioButton. Agregue un poco de padding o de drawablePadding modo que no se pegue a cualquier lado del botón / del texto.

 android:background="@drawable/background_paint" android:drawableTop="@drawable/shape" android:button="@null" 

Estaba en el lado opuesto en mi caso y acabo de poner android: paddingLeft = "0dp" y funcionó así que deberías probar android: paddingRight = "0dp" para radiobuttons

  • Cómo actualizar la Lista cada vez que las pestañas están cambiando en vista pager
  • ¿Podemos establecer una imagen de fondo en pestañas?
  • Comportamiento de desplazamiento de AppBarLayout
  • Cambiar el ancho de la pestaña en ActionBar.Tab
  • Android ActionBar Tabs color de fondo modo dividido
  • Cómo mostrar siempre las pestañas de ActionBar debajo de ActionBar en Android
  • SlidingTabLayout el color de fondo presionado de la lengüeta
  • Activar / Desactivar ficha en ActionBar
  • Fragmento manejo de la orientación de la pantalla con pestañas en barra de acción
  • Comparando La compatibilidad de la barra de acción de Android, el buscapersonas y las pestañas de muestra a ActionBarSherlock
  • ¿Cómo obtener el índice actual de la pestaña seleccionada en TabLayout?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.