Sé que podemos establecer los siguientes valores en las propiedades android:gravity
y android:layout_gravity
:
center
center_vertical
center_horizontal
etc.
Pero estoy confundido con respecto a ambos.
¿Cuál es la diferencia entre el uso de android:gravity
y android:layout_gravity
?
android
android-layout
android-gravity
Paresh Mayani
fuente
fuente
ImageView
Parece que se comportan de manera diferente aTextView
la de.Respuestas:
Sus nombres deberían ayudarte:
android:gravity
establece la gravedad de los contenidos (es decir, sus subvistas) de losView
que se utilizan.android:layout_gravity
establece la gravedad de laView
oLayout
relativa a su padre.Y un ejemplo está aquí .
fuente
layout_
define algo que afecta los elementos externos.android:gravity
se establece a la izquierda y sus hijosandroid:layout_gravity
se establece a la derecha? ¿A qué lado se alinearán los niños?Dentro fuera
gravity
organiza el contenido dentro de la vista.layout_gravity
organiza la posición de la vista fuera de sí misma.A veces también ayuda ver una imagen. El verde y el azul son
TextViews
y los otros dos colores de fondo sonLinearLayouts
.Notas
layout_gravity
no funciona para vistas en aRelativeLayout
. Úselo para vistas en unLinearLayout
oFrameLayout
. Vea mi respuesta suplementaria para más detalles.gravity
lo contrario no tendrá ningún efecto. Por lo tanto,wrap_content
y nogravity
tienen sentido juntos.layout_gravity
lo contrario no tendrá ningún efecto. Por lo tanto,match_parent
y nolayout_gravity
tienen sentido juntos.layout_gravity=center
ve igual quelayout_gravity=center_horizontal
aquí porque están en un diseño lineal vertical. No puede centrarse verticalmente en este caso, por lo quelayout_gravity=center
solo se centra horizontalmente.gravity
ylayout_gravity
las vistas dentro de un diseño. Para ver qué sucede cuando configura elgravity
diseño principal en sí, consulte la respuesta complementaria a la que me referí anteriormente. (Resumen:gravity
no funciona bien en unRelativeLayout
pero puede ser útil con unLinearLayout
.)Recuerde, layout _gravity organiza una vista en su diseño . Gravity organiza el contenido dentro de la vista.
xml
Aquí está el xml de la imagen de arriba para su referencia:
Relacionado
fuente
La diferencia
android:layout_gravity
es la gravedad exterior de la vista. Especifica la dirección en la que la Vista debe tocar el borde de su padre.android:gravity
es la gravedad interior de esa vista. Especifica en qué dirección debe alinearse su contenido.Equivalentes HTML / CSS
Truco fácil para ayudarte a recordar
Tómelo
layout-gravity
como "Lay-outside-gravity".fuente
Respuesta corta: use
android:gravity
osetGravity()
para controlar la gravedad de todas las vistas secundarias de un contenedor; useandroid:layout_gravity
osetLayoutParams()
para controlar la gravedad de una vista individual en un contenedor.Larga historia: para controlar la gravedad en un contenedor de diseño lineal como
LinearLayout
oRadioGroup
, hay dos enfoques:1) Para controlar la gravedad de TODAS las vistas secundarias de un
LinearLayout
contenedor (como lo hizo en su libro), useandroid:gravity
(noandroid:layout_gravity
) en el archivo XML de diseño osetGravity()
método en código.2) Para controlar la gravedad de una vista secundaria en su contenedor, use el
android:layout_gravity
atributo XML. En el código, uno necesita obtenerLinearLayout.LayoutParams
la vista y establecer su gravedad. Aquí hay un ejemplo de código que establece un botón en la parte inferior de un contenedor orientado horizontalmente:Para el
LinearLayout
contenedor horizontal , la gravedad horizontal de su vista secundaria está alineada a la izquierda una tras otra y no se puede cambiar. Establecerandroid:layout_gravity
encenter_horizontal
no tiene ningún efecto. La gravedad vertical predeterminada es center (o center_vertical) y se puede cambiar a top o bottom. En realidad, ellayout_gravity
valor predeterminado es-1
pero Android lo coloca en el centro verticalmente.Para cambiar las posiciones horizontales de las vistas secundarias en un contenedor lineal horizontal, se puede usar el
layout_weight
margen y el relleno de la vista secundaria.Del mismo modo, para el contenedor de grupo de vista vertical, la gravedad vertical de su vista secundaria está alineada uno debajo del otro y no se puede cambiar. La gravedad horizontal predeterminada es el centro (o
center_horizontal
) y se puede cambiar a izquierda o derecha.En realidad, una vista secundaria, como un botón, también tiene un
android:gravity
atributo XML y elsetGravity()
método para controlar sus vistas secundarias: el texto que contiene . ElButton.setGravity(int)
está vinculado a esta entrada de developer.android.com .fuente
De lo que puedo deducir layout_gravity es la gravedad de esa vista dentro de su padre, y la gravedad es la gravedad de los niños dentro de esa vista.
Creo que esto es correcto, pero la mejor manera de averiguarlo es jugar.
fuente
Mire la imagen para tener claridad sobre la gravedad.
fuente
Si queremos establecer la gravedad del contenido dentro de una vista, usaremos "android: gravity", y si queremos establecer la gravedad de esta vista (como un todo) dentro de su vista principal, usaremos "android: layout_gravity ".
fuente
Solo pensé en agregar mi propia explicación aquí: viniendo de un fondo en iOS, así es como he internalizado los dos en términos de iOS: "Layout Gravity" afecta su posición en la supervista. La "gravedad" afecta la posición de sus subvistas dentro de usted. Dicho de otra manera, Layout Gravity te posiciona a ti mismo mientras que la gravedad posiciona a tus hijos.
fuente
Hay muchas diferencias en el
gravity
ylayout-gravity
. Voy a explicar mi experiencia sobre estos 2 conceptos ( toda la información que obtuve debido a mi observación y algunos sitios web ).Nota:-
La gravedad se usa dentro de Ver contenido ya que algunos usuarios tienen una respuesta y es igual para todos
ViewGroup Layout
.Layout-gravity
se usa con la Vista principal ya que algunos Usuarios tienen respuesta.Gravity and Layout-gravity
Es el trabajo más útil con losFrameLayout
niños.We can't use Gravity and Layout-gravity
en la etiqueta de FrameLayout ...Podemos configurar Child View en cualquier lugar del
FrameLayout
usolayout-gravity
.Podemos utilizar cada valor individual de gravedad dentro de la FrameLayout (por ejemplo: -
center_vertical
,center_horizontal
,center
,top
, etc), pero no es posible con otros diseños de ViewGroup.FrameLayout
plenamente a trabajar enLayout-gravity
. Ejemplo: - Si trabaja,FrameLayout
entonces no necesita cambiar el diseño completo para agregar una nueva vista. Simplemente agrega Ver como último en elFrameLayout
y darleLayout-gravity
valor ( esto es una ventaja de la gravedad de diseño con FrameLayout ).Salida:-
Gravity
funciona igual que el anterior pero aquí la diferencia es que podemos usar Gravity dentro delLinearLayout View
yRelativeLayout View
que no es posible enFrameLayout View
.Nota: - Aquí podemos establecer solo 3 valores de
layout_gravity
eso es (left
|right
|center
(también llamadocenter_horizontal
)).Salida:-
Nota: - Aquí también podemos establecer 3 valores de
layout_gravity
eso es (top
|bottom
|center
(también llamadocenter_vertical
)).salida:-
Nota: - No podemos usar
layout_gravity
en elRelativeLayout Views
pero podemos usargravity
para establecerRelativeLayout
niños en la misma posición ...fuente
textColor
blanco en todo,view
entonces sería muy bueno. : DUn truco fácil para recordar esto es que la gravedad se aplica a nosotros dentro de la tierra. Entonces,
android:gravity
es para dentro de la vista.Rememeber al cabo de laico a cabo _gravity que le ayudaría a recordar que
android:layout_gravity
se referiría a las afueras de la vistafuente
Algo que vi en el blog de Sandip que casi me perdí, solucionó mi problema. Dijo que
layout_gravity
NO FUNCIONALinearLayout
.Si está utilizando
LinearLayout
ay la configuración de gravedad lo está volviendo loco (como yo), entonces cambie a otra cosa.De hecho, cambié a un
RelativeLayout
entonces usadolayout_alignParentLeft
ylayout_alignParentRight
en los 2 contenidosTextView
s para ponerlos en una línea para ir a la izquierda y a la derecha.fuente
La diferencia básica entre los dos es que:
android: gravity se usa para elementos secundarios de la vista.
android: layout_gravity se usa para este elemento con respecto a la vista principal.
fuente
android:gravity
se usa para especificar cómo colocar el contenido del objeto dentro del objeto mismo. En otras palabras, android: gravity se usa para especificar la gravedad del contenido de la vista.android:layout_gravity
es una atribución que el niño puede proporcionar a su padre, para especificar la gravedad de la vista dentro de sus padres.Para más detalles puedes visitar
fuente
Gravedad: le permite mover el contenido dentro de un contenedor. (Cómo se colocarán las sub-vistas).
Importante: (MOVER a lo largo del eje X o el eje Y dentro del espacio disponible).
Ejemplo: Supongamos que si trabajara con LinearLayout (Altura: coincidencia_parente, Anchura: coincidencia_parente) como elemento de nivel raíz, entonces tendrá disponible el espacio de fotograma completo; y las vistas secundarias dicen que 2 TextViews (Altura: wrap_content, Ancho: wrap_content) dentro del LinearLayout se pueden mover a lo largo del eje x / y utilizando los valores correspondientes para la gravedad en el padre.
Layout_Gravity: le permite anular el comportamiento de la gravedad principal SOLAMENTE a lo largo del eje x.
Importante: (MOVER [anular] a lo largo del eje X dentro del espacio disponible).
Ejemplo: si tiene en cuenta el ejemplo anterior, sabemos que la gravedad nos permitió movernos a lo largo del eje x / y, es decir; el lugar TextViews dentro de LinearLayout. Digamos que LinearLayout especifica gravedad: centro; lo que significa que cada TextView debe estar centrado tanto vertical como horizontalmente. Ahora, si queremos que uno de los TextView vaya hacia la izquierda / derecha, podemos anular el comportamiento de gravedad especificado usando layout_gravity en TextView.
Bonificación: si profundiza, descubrirá que el texto dentro de TextView actúa como sub-vista; así que si aplica la gravedad en TextView, el texto dentro de TextView se moverá. (todo el concepto se aplica aquí también)
fuente
La gravedad se usa para establecer la alineación del texto en las vistas, pero layout_gravity se usa para establecer las vistas por sí mismo. Tomemos un ejemplo si desea alinear el texto escrito en editText y luego usar la gravedad y desea alinear este editText o cualquier botón o cualquier vista y luego usar layout_gravity, así que es muy simple.
fuente
gravedad : se usa para vistas simples como textview, edittext, etc.
layout_gravity : se usa para la vista actual solo la gravedad en el contexto de su vista principal relativa, como Layout lineal o FrameLayout para hacer que la vista en el centro o cualquier otra gravedad de su elemento primario.
fuente
se utiliza para ajustar el contenido de la vista en relación con su posición específica (área asignada).
android:gravity="left"
no haría nada silayout_width
es igual a la"wrap_content"
se utiliza para visualizarse en relación con el archivo principal o de diseño.
fuente
android:gravity
-> Establece la gravedad del contenido de la Vista en la que se usa.android:layout_gravity
-> Establece la gravedad de la vista o diseño de sus padresfuente
gravedad: se aplica a su propia vista.
layout-gravity --- Se aplica a la vista relacionada con su padre.
fuente
El
android:gravity
establece la gravedad (posición) de los niños, mientras que losandroid:layout_gravity
conjuntos de la posición de la vista en sí. Espero eso ayudefuente