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
- Avvia un nuovo progetto denominato HelloTableLayout.
- 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 elementoView
. In questo esempio viene utilizzato unTextView
per ogni cella. Tra alcune righe è presente anche un elementoView
di base, che consente di tracciare una linea orizzontale. - 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 perActivity
, specificato dall'ID risorsa:R.layout.main
fa riferimento al file di layoutres/layout/main.xml
. - Esegui l'applicazione.
Dovresti vedere quanto segue: