Resposta curta: use android:gravity
ou setGravity()
para controlar a gravidade de todas as visualizações filho de um contêiner; use android:layout_gravity
ou setLayoutParams()
para controlar a gravidade de uma vista individual em um contêiner.
Longa história: para controlar a gravidade em um contêiner de layout linear, como LinearLayout
ou RadioGroup
, existem duas abordagens:
1) Para controlar a gravidade de TODAS as visualizações filho de um LinearLayout
contêiner (como você fez no seu livro), use android:gravity
(não android:layout_gravity
) no arquivo XML de layout ou setGravity()
método no código.
2) Para controlar a gravidade de uma visão filho em seu contêiner, use o android:layout_gravity
atributo XML. No código, é preciso obter LinearLayout.LayoutParams
a visão e definir sua gravidade. Aqui está um exemplo de código que define um botão para baixo em um contêiner horizontalmente orientado:
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 LinearLayout
contêiner horizontal , a gravidade horizontal de sua exibição filho é alinhada à esquerda uma após a outra e não pode ser alterada. Definir android:layout_gravity
para center_horizontal
não tem efeito. A gravidade vertical padrão é o centro (ou central_vertical) e pode ser alterada para cima ou para baixo. Na verdade, o layout_gravity
valor padrão é, -1
mas o Android coloca-o no centro verticalmente.
Para alterar as posições horizontais das vistas filho em um contêiner linear horizontal, pode-se usar a layout_weight
margem e o preenchimento da vista filho.
Da mesma forma, para o contêiner vertical do Grupo de vistas, a gravidade vertical da vista secundária é alinhada superiormente abaixo da outra e não pode ser alterada. A gravidade horizontal padrão é o centro (ou center_horizontal
) e pode ser alterada para esquerda ou direita.
Na verdade, uma exibição filho como um botão também possui android:gravity
atributo XML e o setGravity()
método para controlar suas exibições filho - o texto nele. O Button.setGravity(int)
está vinculado a esta entrada developer.android.com .