Tabella

TableLayout è un ViewGroup che visualizza gli elementi View secondari in righe e colonne.

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

TableLayout posiziona gli elementi secondari in righe e colonne. I contenitori TableLayout non visualizzano le linee di bordo per le righe, colonne o celle. La tabella avrà tante colonne quante la riga con il maggior numero di celle. Una tabella può lasciare celle vuote. Le celle possono includere più colonne, come accade nel codice HTML. Puoi suddividere le colonne utilizzando il campo span nella classe TableRow.LayoutParams.

Nota:le celle non possono comprendere più righe.

TableRow oggetti sono le visualizzazioni figlio di TableLayout (ogni TableRow definisce una singola riga nella tabella). Ogni riga ha zero o più celle, ognuna delle quali è definita da qualsiasi tipo di altra vista. Di conseguenza, le celle di una riga possono essere composte da una varietà di oggetti View, come oggetti ImageView o TextView. Una cella può anche essere un oggetto ViewGroup (ad esempio, puoi nidificare un altro TableLayout come cella).

Il seguente layout di esempio ha due righe e due celle in ciascuna. Lo screenshot associato mostra il risultato, con i bordi delle celle visualizzati come linee tratteggiate (aggiunti per un effetto visivo).

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1">
    <TableRow>
        <TextView
            android:text="@string/table_layout_4_open"
            android:padding="3dip" />
        <TextView
            android:text="@string/table_layout_4_open_shortcut"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>

    <TableRow>
        <TextView
            android:text="@string/table_layout_4_save"
            android:padding="3dip" />
        <TextView
            android:text="@string/table_layout_4_save_shortcut"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
</TableLayout>

Le colonne possono essere nascoste, contrassegnate per estendere e riempire lo spazio disponibile sullo schermo oppure possono essere contrassegnate come restringibili per forzare la riduzione della colonna fino a quando la tabella non si adatta allo schermo. Per ulteriori dettagli, consulta la documentazione di TableLayout reference.

Esempio

  1. Avvia un nuovo progetto denominato HelloTableLayout.
  2. Apri il file res/layout/main.xml e inserisci quanto segue:
    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:stretchColumns="1">
    
        <TableRow>
            <TextView
                android:layout_column="1"
                android:text="Open..."
                android:padding="3dip" />
            <TextView
                android:text="Ctrl-O"
                android:gravity="right"
                android:padding="3dip" />
        </TableRow>
    
        <TableRow>
            <TextView
                android:layout_column="1"
                android:text="Save..."
                android:padding="3dip" />
            <TextView
                android:text="Ctrl-S"
                android:gravity="right"
                android:padding="3dip" />
        </TableRow>
    
        <TableRow>
            <TextView
                android:layout_column="1"
                android:text="Save As..."
                android:padding="3dip" />
            <TextView
                android:text="Ctrl-Shift-S"
                android:gravity="right"
                android:padding="3dip" />
        </TableRow>
    
        <View
            android:layout_height="2dip"
            android:background="#FF909090" />
    
        <TableRow>
            <TextView
                android:text="X"
                android:padding="3dip" />
            <TextView
                android:text="Import..."
                android:padding="3dip" />
        </TableRow>
    
        <TableRow>
            <TextView
                android:text="X"
                android:padding="3dip" />
            <TextView
                android:text="Export..."
                android:padding="3dip" />
            <TextView
                android:text="Ctrl-E"
                android:gravity="right"
                android:padding="3dip" />
        </TableRow>
    
        <View
            android:layout_height="2dip"
            android:background="#FF909090" />
    
        <TableRow>
            <TextView
                android:layout_column="1"
                android:text="Quit"
                android:padding="3dip" />
        </TableRow>
    </TableLayout>
    

    Nota la somiglianza con la struttura di una tabella HTML. L'elemento TableLayout è come l'elemento <table> HTML; TableRow è come un elemento ><tr>>; ma per le celle puoi utilizzare qualsiasi tipo di elemento View. In questo esempio viene utilizzato un TextView per ogni cella. Tra alcune righe è presente anche un elemento View di base, che consente di tracciare una linea orizzontale.

  3. Assicurati che l'attività HelloTableLayout carichi questo layout nel metodo onCreate():

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)
    }
    

    Java

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    

    Il metodo setContentView(int) carica il file di layout per Activity, specificato dall'ID risorsa: R.layout.main fa riferimento al file di layout res/layout/main.xml.

  4. Esegui l'applicazione.

Dovresti vedere quanto segue: