TableLayout
ist ein ViewGroup
, der untergeordnete View
-Elemente in Zeilen und Spalten anzeigt.
Hinweis:Für eine bessere Leistung und bessere Toolunterstützung sollten Sie stattdessen Ihr Layout mit „ConstraintLayout“ erstellen.
TableLayout
positioniert die untergeordneten Elemente in Zeilen und Spalten. TableLayout-Container zeigen keine Rahmenlinien für ihre Zeilen, Spalten oder Zellen an. Die Tabelle hat genauso viele Spalten wie die Zeile mit den meisten Zellen. In einer Tabelle können Zellen leer bleiben. Zellen können sich über mehrere Spalten erstrecken, wie in HTML. Sie können Spalten mithilfe des Felds span
in der Klasse TableRow.LayoutParams
erstrecken.
Hinweis:Zellen dürfen sich nicht über mehrere Zeilen erstrecken.
TableRow
-Objekte sind die untergeordneten Ansichten eines TableLayouts. Jede TableRow definiert eine einzelne Zeile in der Tabelle. Jede Zeile hat null oder mehr Zellen, die jeweils durch eine beliebige andere Ansicht definiert werden. Die Zellen einer Zeile können also aus einer Vielzahl von View-Objekten wie ImageView- oder TextView-Objekten bestehen. Eine Zelle kann auch ein ViewGroup-Objekt sein. So können Sie beispielsweise ein anderes TableLayout als Zelle verschachteln.
Das folgende Beispiellayout enthält jeweils zwei Zeilen und zwei Zellen. Der zugehörige Screenshot zeigt das Ergebnis. Die Zellrahmen werden als gepunktete Linien dargestellt, die für einen visuellen Effekt hinzugefügt wurden.
<?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>
Spalten können ausgeblendet, markiert werden, um den verfügbaren Bildschirmbereich zu strecken und zu füllen, oder als verkleinerbar markiert werden, um zu erzwingen, dass die Spalte verkleinert wird, bis die Tabelle an den Bildschirm angepasst ist. Weitere Informationen finden Sie in der TableLayout reference
-Dokumentation.
Beispiel
- Starten Sie ein neues Projekt mit dem Namen HelloTableLayout.
- Öffnen Sie die Datei
res/layout/main.xml
und fügen Sie Folgendes ein:<?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>
Beachten Sie, wie dies der Struktur einer HTML-Tabelle ähnelt. Das
TableLayout
-Element entspricht dem HTML-<table>
-Element undTableRow
ist wie ein><tr>>
-Element. Für die Zellen können Sie jedoch ein beliebigesView
-Element verwenden. In diesem Beispiel wird für jede Zelle einTextView
verwendet. Zwischen einigen Zeilen befindet sich auch ein grundlegenderView
, mit dem eine horizontale Linie gezeichnet wird. - Achten Sie darauf, dass Ihre HelloTableLayout-Aktivität dieses Layout in der Methode
onCreate()
lädt: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); }
Die Methode
setContentView(int)
lädt die Layoutdatei für denActivity
, die durch die Ressourcen-ID angegeben wird.R.layout.main
bezieht sich auf die Layoutdateires/layout/main.xml
. - Führen Sie die Anwendung aus.
Sie sollten Folgendes sehen: