Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Centrar dos botones horizontalmente

Trato de organizar dos botones (con imágenes en ellos que funcionan bien) uno al lado del otro y para centrarlos horizontalmente. Eso es lo que tengo hasta ahora:

<LinearLayout android:orientation="horizontal" android:layout_below="@id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center"> <Button android:id="@+id/allow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/radioGroup" android:layout_gravity="center_horizontal" android:drawableLeft="@drawable/accept_btn" android:text="Allow"/> <Button android:id="@+id/deny" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/allow" android:layout_below="@id/radioGroup" android:layout_gravity="center_horizontal" android:drawableLeft="@drawable/block_btn" android:text="Deny"/> </LinearLayout> 

Por desgracia todavía están alineados con el lado izquierdo. Cualquier ayuda es apreciada! Yves

  • ¿Dónde puedo descargar Eclipse Android Bundle
  • API de historiales de Android 4.0 e HTML5
  • Cómo rellenar rectángulo con opacidad en android
  • Cómo configurar el color de fondo de una vista
  • AlertDialog con casilla de verificación En android
  • Css3 transformar rotate3d con la perspectiva no funciona en Android
  • Editar :

    Lamentablemente, ninguno de los comentarios o sugerencias funcionan hasta ahora. Es por eso que intento proporcionar un diseño simplificado y completo ahora con RelativeLayout:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/allow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/TextView01" android:text="Allow"/> <Button android:id="@+id/deny" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/allow" android:layout_alignTop="@id/allow" android:text="Deny"/> </RelativeLayout> 

    He intentado todas las combinaciones de atributos en el LinearLayout y en los elementos Button sin suerte. ¿Alguna otra idea?

  • Añadir IMEI y MAC a wlan0 a Genymotion / AndroVM
  • La posición no funciona en el navegador móvil
  • Personalizar menú contextual como pinterest menu
  • EditarTexto contenido dentro de ExpandableListView desaparecer al hacer clic en siguiente ExpandableListView encabezado
  • La gravedad de TextView no funciona con hebreo
  • Problema de conversión de URI a Bitmap (2014):
  • 17 Solutions collect form web for “Centrar dos botones horizontalmente”

    Esta es mi solución:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <TextView android:text="@+id/SomeText" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:background="@android:drawable/bottom_bar" android:paddingLeft="4.0dip" android:paddingTop="5.0dip" android:paddingRight="4.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/TextView01"> <Button android:id="@+id/allow" android:layout_width="0.0dip" android:layout_height="fill_parent" android:text="Allow" android:layout_weight="1.0" /> <Button android:id="@+id/deny" android:layout_width="0.0dip" android:layout_height="fill_parent" android:text="Deny" android:layout_weight="1.0" /> </LinearLayout> </RelativeLayout> 

    Sé que ya has encontrado una solución, pero también te puede resultar útil. El TextView vacío utilizado como referencia central puede doblar como relleno entre los botones aumentando el ajuste de inmersión. También maneja los cambios de orientación de la pantalla bien.

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button1" android:text="Left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/centerPoint" /> <TextView android:id="@+id/centerPoint" android:text="" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> <Button android:id="@+id/button2" android:text="Right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/centerPoint" /> </RelativeLayout> 

    Captura de pantalla del resultado:

    Captura de pantalla del resultado

    No sé si realmente encontró una buena respuesta a esta pregunta, pero lo logré haciendo un TableRow, estableciendo el ancho de fill_parent y el ajuste de la gravedad al centro y luego colocar los dos botones dentro de él.

      <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test" android:width="100dip"></Button> <Button android:layout_width="wrap_content" android:text="Test" android:layout_height="wrap_content" android:width="100dip"></Button> </TableRow> 

    Si está buscando una solución rápida completamente RelativeLayout, lo siguiente funciona bien. El elemento Dummy View es invisible y centrado horizontalmente. Ambos botones están alineados a la izquierda oa la derecha.

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.be.android.stopwatch" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal"> <View android:id="@+id/dummy" android:visibility="visible" android:layout_height="0dip" android:layout_width="1dip" android:background="#FFFFFF" android:layout_centerHorizontal="true"/> <ImageButton android:id="@+id/button1" android:layout_height="25dip" android:layout_alignTop="@+id/dummy" android:layout_toLeftOf="@+id/dummy" android:layout_width="50dip"/> <ImageButton android:id="@+id/button2" android:layout_height="25dip" android:layout_alignTop="@+id/dummy" android:layout_toRightOf="@+id/dummy" android:layout_width="50dip"/> </RelativeLayout> 

    Los atributos llamados android:layout_foo son LayoutParams – argumentos al padre de View. Intente establecer android:gravity="center" en LinearLayout lugar de android:layout_gravity . Uno afecta a cómo el LinearLayout establecerá a sus hijos dentro de sí mismo, el otro afecta cómo el LinearLayout de LinearLayout debe tratarlo. Quieres lo primero.

    Centro dos botones de esta manera:

     <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/one" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/two" /> </LinearLayout> </LinearLayout> 

    He envuelto dos LinearLayout horizontal como sigue:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > 

    Sus widgets de IU aquí

     </LinearLayout> </LinearLayout> 

    Esto parece una pregunta muy antigua, pero tuve el mismo problema también. Tuve que colocar dos botones al lado del otro en el centro de la pantalla (horizontalmente). Terminé colocando los dos botones dentro de un diseño lineal y colocando el diseño lineal en un diseño relativo con su gravedad puesta al centro.


    UPDATE: He encontrado una solución aún más simple:

     <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerHorizontal="true"> <Button android:text="status" android:layout_height="wrap_content" android:layout_width="wrap_content"/> <Button android:text="fly" android:layout_height="wrap_content" android:layout_width="wrap_content"/> </LinearLayout> 

    Esto es lo que tenía antes:

      <RelativeLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/actionButtons" android:layout_below="@id/tripInfo" android:gravity="center"> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content"> <Button android:text="status" android:layout_height="wrap_content" android:layout_width="wrap_content" /> <Button android:text="fly" android:layout_height="wrap_content" android:layout_width="wrap_content" /> </LinearLayout> </RelativeLayout> 

    Use un Layout Relatie en lugar de Linear y establezca la gravedad como android: gravity = "center" .

    Los diseños relativos ofrecen un mejor rendimiento y una mejor escala si ejecuta la aplicación de dispositivos de diferentes tamaños.

    Siguiendo como ejemplo XML y la interfaz de usuario resultante:

      <RelativeLayout android:layout_width="match_parent" android:layout_height="80dp" android:background="@Color/custom1" android:gravity="center" > <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="50dp" android:background="@color/Red" android:gravity="center" android:layout_marginRight="80dp" android:text="Text11111" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_toRightOf="@id/tv1" android:background="@color/Yellow" android:gravity="center" android:text="Text22222" /> </RelativeLayout> 

    Introduzca aquí la descripción de la imagen

    Esto es lo que hice, envolvió un diseño lineal con un diseño lineal que tiene su gravedad puesta a center_horizontal. A continuación, establezco el ancho de diseño lineal con el ancho de píxeles de los botones combinados. En este ejemplo, los botones son 100px de ancho, por lo que establecer el diseño lineal envuelto a 200px.

    Ejemplo xml:

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal"> <TextView android:layout_width="fill_parent" android:layout_height="200px" android:text="This is some text!" android:background="#ff333333" /> <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="200px"> <Button android:id="@+id/button1" android:layout_height="wrap_content" android:text="Button 1" android:layout_width="100px"> </Button> <Button android:id="@+id/button2" android:layout_height="wrap_content" android:text="Button 2" android:layout_width="100px"> </Button> </LinearLayout> </LinearLayout> 

    Siento tu dolor, tuve que ajustar las cosas un poco y conseguir esto para trabajar.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/Button01" android:layout_alignParentLeft="true" android:layout_width="75dp" android:layout_height="40dp" android:layout_marginTop="15dp" android:layout_marginLeft="60dp" android:text="No" /> <Button android:id="@+id/Button02" android:layout_alignParentRight="true" android:layout_width="75dp" android:layout_height="40dp" android:layout_marginTop="15dp" android:layout_marginRight="60dp" android:text="Yes" /> <TextView android:id="@+id/centerPoint" android:layout_toRightOf="@id/Button01" android:layout_toLeftOf="@id/Button02" android:text="" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> </RelativeLayout> 

    Esto funcionó bastante bien para mí:

     <RadioGroup android:id="@+id/ratingRadioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_gravity="center_horizontal"> <RadioButton android:id="@+id/likeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/like" android:paddingRight="20pt"/> <RadioButton android:id="@+id/dislikeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dislike" /> </RadioGroup> 

    La manera más elegante de hacer esto sin introducir componentes redundantes o grupos de vista es utilizar el espaciado. Puede utilizar elementos de espacio con layout_weight dentro de un diseño lineal para obtener el efecto deseado:

     <LinearLayout android:orientation="horizontal" android:layout_below="@id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center"> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:id="@+id/allow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/radioGroup" android:drawableLeft="@drawable/accept_btn" android:text="Allow"/> <Button android:id="@+id/deny" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/allow" android:layout_below="@id/radioGroup" android:drawableLeft="@drawable/block_btn" android:text="Deny"/> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> 

    Dando a ambos elementos de espacio un layout_weight igual (no importa cuáles sean los pesos, simplemente los toma como una relación de los totales de todos los pesos) hace que los elementos de espacio ocupen el espacio adicional que está disponible. Por lo tanto, obliga a los botones a la mitad, que no tienen ningún layout_weight asignado a ellos, por lo que no toman ningún espacio extra, sólo lo que se les da explícitamente (el tamaño de las imágenes).

    Esta es mi solución usando relativeLayout:

     <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <Button android:id="@+id/reject_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/reject"/> <Button android:id="@+id/accept_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/accept" android:layout_toRightOf="@id/reject_btn"/> </RelativeLayout> 

    Utilice RelativeLayout lugar de LinearLayout y establezca su android_layout:gravity="center_horizontal" o una manera muy no óptima es establecer el android_padding de LinearLayout con valores de píxeles alineándolo en el centro.

    Debajo del código alineará dos botones en el centro horizontal, no dp se da. Así que esto funcionará en toda la orientación y todas las pantallas.

     <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change password" android:id="@+id/change_pwd_button" android:layout_gravity="center_horizontal" android:background="@android:color/holo_blue_dark" android:textColor="@android:color/white" android:padding="25px"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Close" android:id="@+id/change_pwd_close_btn" android:layout_gravity="center_horizontal" android:background="@android:color/holo_blue_dark" android:textColor="@android:color/white" android:layout_marginLeft="20dp" /> </LinearLayout> 

    Este trabajo para mí. simple y fácil.

     <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/btn_one" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button One" /> <Button android:id="@+id/btn_two" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button Two" android:layout_toRightOf="@id/btn_one" /> </RelativeLayout> </LinearLayout> </RelativeLayout> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.