Risposta breve: utilizzare android:gravity
o setGravity()
per controllare la gravità di tutte le viste figlio di un contenitore; utilizzare android:layout_gravity
o setLayoutParams()
per controllare la gravità di una vista individuale in un contenitore.
Lunga storia: per controllare la gravità in un contenitore di layout lineare come LinearLayout
o RadioGroup
, ci sono due approcci:
1) Per controllare la gravità di TUTTE le viste figlio di un LinearLayout
contenitore (come hai fatto nel tuo libro), usa android:gravity
(non android:layout_gravity
) nel file XML layout o il setGravity()
metodo nel codice.
2) Per controllare la gravità di una vista figlio nel suo contenitore, utilizzare l' android:layout_gravity
attributo XML. Nel codice, è necessario ottenere LinearLayout.LayoutParams
la vista e impostarne la gravità. Ecco un esempio di codice che imposta un pulsante in basso in un contenitore orientato orizzontalmente:
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);
Per i LinearLayout
contenitori orizzontali , la gravità orizzontale della vista figlio è allineata a sinistra una dopo l'altra e non può essere modificata. L'impostazione android:layout_gravity
su center_horizontal
non ha alcun effetto. La gravità verticale predefinita è center (o center_vertical) e può essere modificata in alto o in basso. In realtà il layout_gravity
valore predefinito è, -1
ma Android lo mette al centro in verticale.
Per modificare le posizioni orizzontali delle viste figlio in un contenitore lineare orizzontale, è possibile utilizzare layout_weight
, margine e riempimento della vista figlio.
Analogamente, per il contenitore Gruppo vista verticale, la gravità verticale della vista figlio è allineata in alto una sotto l'altra e non può essere modificata. La gravità orizzontale predefinita è centrale (o center_horizontal
) e può essere cambiata a sinistra o a destra.
In realtà, una vista figlio come un pulsante ha anche l' android:gravity
attributo XML e il setGravity()
metodo per controllare le viste figlio - il testo in essa contenuto. Il Button.setGravity(int)
è legata a questa voce di developer.android.com .