Layout relativo

Prova la modalità Scrivi
Jetpack Compose è il toolkit dell'interfaccia utente consigliato per Android. Scopri come utilizzare i layout in Compose.

RelativeLayout è un gruppo di viste che mostra le visualizzazioni secondarie in posizioni relative. La posizione di ciascuna vista può essere specificata in relazione agli elementi di pari livello (ad esempio a sinistra o sotto un'altra vista) o in posizioni relative all'area RelativeLayout principale (ad esempio allineate al basso, a sinistra o al centro).

Nota: per migliorare le prestazioni e il supporto degli strumenti, dovresti creare il tuo layout con ConstraintLayout.

RelativeLayout è un'utilità molto utile per la progettazione di un'interfaccia utente perché può eliminare i gruppi di visualizzazioni nidificati e mantenere uniforme la gerarchia del layout, migliorando le prestazioni. Se ti capita di utilizzare diversi gruppi LinearLayout nidificati, potresti riuscire a sostituirli con un singolo gruppo RelativeLayout.

Posizionamento delle viste

RelativeLayout consente alle viste secondarie di specificare la propria posizione rispetto alla vista principale o tra di loro (specificate dall'ID). Così puoi allineare due elementi con il bordo destro o crearne uno sotto l'altro, centrato nello schermo, centrato a sinistra e così via. Per impostazione predefinita, tutte le viste secondarie sono disegnate in alto a sinistra nel layout, quindi devi definire la posizione di ogni vista utilizzando le varie proprietà di layout disponibili in RelativeLayout.LayoutParams.

Alcune delle numerose proprietà di layout disponibili per le visualizzazioni in un RelativeLayout includono:

android:layout_alignParentTop
Se "true", il bordo superiore di questa vista corrisponde al bordo superiore dell'elemento principale.
android:layout_centerVertical
Se "true", questo elemento secondario viene centrato verticalmente all'interno dell'elemento principale.
android:layout_below
Posiziona il bordo superiore di questa vista sotto quella specificata con un ID risorsa.
android:layout_toRightOf
Posiziona il bordo sinistro di questa vista a destra della vista specificata con un ID risorsa.

Questi sono solo alcuni esempi. Tutti gli attributi di layout sono documentati all'indirizzo RelativeLayout.LayoutParams.

Il valore di ogni proprietà di layout è un valore booleano per attivare una posizione del layout rispetto all'elemento RelativeLayout principale oppure un ID che fa riferimento a un'altra vista del layout in base al quale deve essere posizionata la vista.

Nel layout XML, le dipendenze rispetto ad altre viste del layout possono essere dichiarate in qualsiasi ordine. Ad esempio, puoi dichiarare che "view1" è posizionato sotto "view2" anche se "view2" è l'ultima visualizzazione dichiarata nella gerarchia. L'esempio seguente illustra questo scenario.

Esempio

Ciascun attributo che controlla la posizione relativa di ciascuna visualizzazione viene enfatizzato.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

Per informazioni dettagliate su tutti gli attributi di layout disponibili per ogni vista secondaria di un RelativeLayout, consulta RelativeLayout.LayoutParams.