Layout relativo

Prova il metodo Scrivi
Jetpack Compose è il toolkit consigliato per la UI 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 ogni vista può essere specificata come relativa a elementi di pari livello (ad esempio a sinistra o sotto un'altra vista) o in posizioni relative all'area RelativeLayout principale (ad esempio allineata in basso, a sinistra o al centro).

Nota: per un miglior rendimento e un migliore supporto degli strumenti, devi invece creare il layout con ConstraintLayout.

Un'RelativeLayout è un'utilità molto potente per la progettazione di un'interfaccia utente, poiché può eliminare i gruppi di viste nidificate e mantenere piatta la gerarchia del layout, migliorando le prestazioni. Se ti ritrovi a utilizzare più gruppi LinearLayout nidificati, potresti essere in grado di sostituirli con un singolo RelativeLayout.

Viste di posizionamento

RelativeLayout consente alle viste secondarie di specificare la propria posizione rispetto alla vista principale o tra loro (specificate dall'ID). In questo modo puoi allineare due elementi con il bordo destro, o posizionarne uno sotto l'altro, centrato sullo 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 visualizzazione corrisponde al bordo superiore dell'immagine principale.
android:layout_centerVertical
Se "true", centra questo asset secondario 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 di quella specificata con un ID risorsa.

Questi sono solo alcuni esempi. Tutti gli attributi di layout sono documentati in RelativeLayout.LayoutParams.

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

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

Esempio

Viene enfatizzato ogni attributo che controlla la posizione relativa di ogni vista.

<?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 dettagli su tutti gli attributi di layout disponibili per ogni vista secondaria di un RelativeLayout, consulta RelativeLayout.LayoutParams.