LinearLayout
è un gruppo di oggetti View che allinea tutti gli elementi secondari in un'unica direzione, verticale o orizzontale. Puoi specificare la direzione del layout con l'
android:orientation
attributo.
LinearLayout con tre elementi secondari orientati orizzontalmente.
Tutti gli elementi secondari di un LinearLayout sono impilati uno dopo l'altro, quindi un elenco verticale ha un solo elemento secondario per riga, indipendentemente dalla larghezza. Un elenco orizzontale ha un'altezza di una sola riga, che è l'altezza dell'elemento secondario più alto, più il padding. Un LinearLayout rispetta i margini tra gli
elementi secondari e l'allineamento (a destra, al centro o a sinistra) di ogni
elemento secondario.
Peso del layout
LinearLayout supporta anche l'assegnazione di un peso ai
singoli elementi secondari con l'
android:layout_weight
attributo. Questo attributo assegna un valore di "importanza" a una visualizzazione in termini di spazio occupato sullo schermo. Un valore di peso maggiore consente di espandere la visualizzazione per riempire lo spazio rimanente nella vista genitore. Le visualizzazioni secondarie possono specificare un valore di peso e lo spazio rimanente nel gruppo di oggetti View viene assegnato proporzionalmente agli elementi secondari, in base al peso dichiarato. Il peso predefinito è zero.
Distribuzione uguale
Per creare un layout lineare in cui ogni elemento secondario utilizza la stessa quantità di spazio
sullo schermo, imposta la
android:layout_height
di ogni visualizzazione su "0dp" per un layout verticale o la
android:layout_width
di ogni visualizzazione su "0dp" per un layout orizzontale. Poi imposta android:layout_weight di ogni visualizzazione su "1".
Distribuzione non uguale
Puoi anche creare layout lineari in cui gli elementi secondari utilizzano quantità di spazio diverse sullo schermo. Considera i seguenti esempi:
- Supponiamo che tu abbia tre campi di testo: due con un valore di peso pari a 1 e un terzo con il valore di peso predefinito pari a 0. Il terzo campo di testo, con il valore di peso pari a 0, occupa solo l'area richiesta dal suo contenuto. Gli altri due campi di testo, con il valore di peso pari a 1, si espandono in modo uniforme per riempire lo spazio rimanente dopo aver misurato i contenuti di tutti e tre i campi.
- Se invece hai tre campi di testo in cui due hanno un valore di peso pari a 1 e il terzo ha un peso pari a 2, lo spazio rimanente dopo aver misurato i contenuti di tutti e tre i campi viene allocato come segue: metà al campo con il valore di peso pari a 2 e metà divisa equamente tra i campi con il valore di peso pari a 1.
La figura e lo snippet di codice seguenti mostrano come potrebbero funzionare i pesi del layout in un'attività "Invia messaggio". Il campo A , la riga Oggetto e il pulsante Invia occupano solo l'altezza di cui hanno bisogno. L'area del messaggio occupa il resto dell'altezza dell'attività.
LinearLayout.
<?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:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="end" android:text="@string/send" /> </LinearLayout>
Per i dettagli sugli attributi disponibili per ogni vista bambino di a
LinearLayout, consulta
LinearLayout.LayoutParams.