¿Cuál es la diferencia entre gravedad y diseño_gravity en Android?

Resuelto Paresh Mayani asked hace 54 años • 22 respuestas

Sé que podemos establecer los siguientes valores para las propiedades android:gravityy :android:layout_gravity

  1. center
  2. center_vertical
  3. center_horizontal, etc.

Pero estoy confundido con respecto a ambos.

¿ Cuál es la diferencia entre el uso de android:gravityy android:layout_gravity?

Paresh Mayani avatar Jan 01 '70 08:01 Paresh Mayani
Aceptado

Sus nombres deberían ayudarte:

  • android:gravityestablece la gravedad del contenido (es decir, sus subvistas) del objeto en el que Viewse utiliza.
  • android:layout_gravityestablece la gravedad de Viewo Layouten relación con su padre.

Y un ejemplo está aquí .

Sephy avatar Aug 14 '2010 09:08 Sephy

Dentro fuera

  • gravityorganiza el contenido dentro de la vista.
  • layout_gravityorganiza la posición de la vista fuera de sí misma.

A veces también ayuda ver una imagen. El verde y el azul son TextViewsy los otros dos colores de fondo son LinearLayouts.

ingrese la descripción de la imagen aquí

Notas

  • No layout_gravityfunciona para vistas en un archivo RelativeLayout. Úselo para vistas en a LinearLayouto FrameLayout. Consulte mi respuesta complementaria para obtener más detalles.
  • El ancho (o alto) de la vista tiene que ser mayor que su contenido. De lo contrario gravityno tendrá ningún efecto. Por lo tanto, wrap_contenty gravityjuntos no tienen sentido.
  • El ancho (o alto) de la vista debe ser menor que el del padre. De lo contrario layout_gravityno tendrá ningún efecto. Por lo tanto, match_parenty layout_gravityjuntos no tienen sentido.
  • Se layout_gravity=centerven igual que layout_gravity=center_horizontalaquí porque tienen un diseño lineal vertical. En este caso, no puedes centrar verticalmente, por lo que layout_gravity=centersolo centras horizontalmente.
  • Esta respuesta solo trataba sobre la configuración gravityy layout_gravitylas vistas dentro de un diseño. Para ver qué sucede cuando configura el gravitydiseño principal, consulte la respuesta complementaria a la que me referí anteriormente. (Resumen: gravityno funciona bien en a RelativeLayoutpero puede ser útil con a LinearLayout).

Recuerde, el diseño _gravity organiza una vista en su diseño . La gravedad organiza el contenido dentro de la vista.

XML

Aquí está el xml de la imagen de arriba para su referencia:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#e3e2ad"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="left"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center_horizontal"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="right"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center"
            android:text="center" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#d6c6cd"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="layout_gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="left"
            android:background="#bcf5b1"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center_horizontal"
            android:background="#aacaff"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="right"
            android:background="#bcf5b1"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:background="#aacaff"
            android:text="center" />

    </LinearLayout>

</LinearLayout>

Relacionado

  • Diferencia entre el relleno y el margen de una vista
  • Match_parent frente a wrap_content
  • Cómo configurar la gravedad y la gravedad del diseño de un LinearLayout mediante programación
Suragch avatar Oct 04 '2014 05:10 Suragch

La diferencia

android:layout_gravityes la gravedad exterior de la Vista. Especifica la dirección en la que la Vista debe tocar el borde de su padre.

android:gravityes la gravedad interior de esa vista. Especifica en qué dirección debe alinearse su contenido.

Equivalentes HTML/CSS

(si tiene experiencia en desarrollo web)

Android                 | CSS
————————————————————————+————————————
android:layout_gravity  | float
android:gravity         | text-align

Truco fácil para ayudarte a recordar

Tómelo layout-gravitycomo "Gravedad exterior".

Vishnu Haridas avatar Jul 25 '2011 17:07 Vishnu Haridas