Respuesta corta: use android:gravity
o setGravity()
para controlar la gravedad de todas las vistas secundarias de un contenedor; use android:layout_gravity
o setLayoutParams()
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
o RadioGroup
, hay dos enfoques:
1) Para controlar la gravedad de TODAS las vistas secundarias de un LinearLayout
contenedor (como lo hizo en su libro), use android:gravity
(no android:layout_gravity
) en el archivo XML de diseño o setGravity()
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 obtener LinearLayout.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:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
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. Establecer android:layout_gravity
en center_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, el layout_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 el setGravity()
método para controlar sus vistas secundarias: el texto que contiene . El Button.setGravity(int)
está vinculado a esta entrada de developer.android.com .