Layout relativo

Prova Compose
Jetpack Compose è il toolkit UI consigliato per Android. Scopri come lavorare con i layout in Compose.

RelativeLayout è un gruppo di oggetti View che mostra le visualizzazioni secondarie in posizioni relative. La posizione di ogni visualizzazione può essere specificata come relativa agli elementi di pari livello (ad esempio a sinistra o sotto un'altra visualizzazione) o in posizioni relative all'area RelativeLayout principale (ad esempio allineata in basso, a sinistra o al centro).

Nota: Per prestazioni e supporto degli strumenti migliori, ti consigliamo di creare il layout con ConstraintLayout.

RelativeLayout è un'utilità molto potente per la progettazione di un'interfaccia utente perché può eliminare i gruppi di visualizzazioni nidificati e mantenere piatta la gerarchia dei layout, migliorando le prestazioni. Se utilizzi diversi gruppi LinearLayout nidificati, potresti sostituirli con un singolo RelativeLayout.

Posizionamento delle visualizzazioni

RelativeLayout consente alle viste bambino di specificare la propria posizione rispetto alla vista genitore o l'una rispetto all'altra (specificata dall'ID). In questo modo puoi allineare due elementi in base al bordo destro o posizionarne uno sotto l'altro, al centro dello schermo, al centro a sinistra e così via. Per impostazione predefinita, tutte le visualizzazioni secondarie vengono disegnate in alto a sinistra del layout, pertanto devi definire la posizione di ogni visualizzazione utilizzando le varie proprietà di layout disponibili in RelativeLayout.LayoutParams.

Di seguito sono riportate alcune delle numerose proprietà di layout disponibili per le visualizzazioni in un RelativeLayout:

android:layout_alignParentTop
Se "true", il bordo superiore di questa visualizzazione corrisponde al bordo superiore dell'elemento principale.
android:layout_centerVertical
Se "true", questo elemento secondario viene centrato verticalmente all'interno del relativo elemento principale.
android:layout_below
Posiziona il bordo superiore di questa visualizzazione sotto la visualizzazione specificata con un ID risorsa.
android:layout_toRightOf
Posiziona il bordo sinistro di questa visualizzazione a destra della visualizzazione 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 attivare una posizione di layout relativa all'elemento principale RelativeLayout o un ID che fa riferimento a un'altra visualizzazione nel layout rispetto alla quale la visualizzazione deve essere posizionata.

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

Esempio

Vengono evidenziati tutti gli attributi che controllano la posizione relativa di ogni visualizzazione.

<?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 bambino di un RelativeLayout, consulta RelativeLayout.LayoutParams.