Mesa

TableLayout é um ViewGroup que exibe elementos filhos de View em linhas e colunas.

Observação: para melhor desempenho e suporte a ferramentas, crie seu layout com ConstraintLayout.

TableLayout posiciona os filhos em linhas e colunas. Os contêineres TableLayout não exibem linhas de borda para as respectivas linhas, colunas ou células. A tabela terá tantas colunas quanto a linha com o maior número de células. Uma tabela pode deixar as células vazias. As células podem abranger várias colunas, como em HTML. Você pode abranger colunas usando o campo span na classe TableRow.LayoutParams.

Observação: as células não podem abranger várias linhas.

Objetos TableRow são as visualizações filhas de um TableLayout (cada TableRow define uma única linha na tabela). Cada linha tem zero ou mais células, cada uma sendo definida por qualquer tipo de outra visualização. Assim, as células de uma linha podem ser compostas por uma variedade de objetos de visualização, como objetos ImageView ou TextView. Uma célula também pode ser um objeto ViewGroup. Por exemplo, você pode aninhar outro TableLayout como uma célula.

O layout de exemplo a seguir tem duas linhas e duas células em cada uma. A captura de tela abaixo mostra o resultado, com bordas de células exibidas como linhas pontilhadas (adicionadas para efeito visual).

<?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>

As colunas podem ser ocultadas, marcadas para esticar e preencher o espaço de tela disponível ou marcadas como encolhíveis para forçar a redução da coluna até que a tabela se ajuste à tela. Consulte a documentação de TableLayout reference para saber mais.

Exemplo

  1. Inicie um novo projeto chamado HelloTableLayout.
  2. Abra o arquivo res/layout/main.xml e insira o seguinte:
    <?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>
    

    Observe como isso se parece com a estrutura de uma tabela HTML. O elemento TableLayout é como o elemento HTML <table>; TableRow é como um elemento ><tr>>. No entanto, para as células, você pode usar qualquer tipo de elemento View. Neste exemplo, uma TextView é usada para cada célula. Entre algumas das linhas, há também uma View básica, que é usada para desenhar uma linha horizontal.

  3. Verifique se a atividade HelloTableLayout carrega esse layout no método 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);
    }
    

    O método setContentView(int) carrega o arquivo de layout para a Activity, especificada pelo ID do recurso; R.layout.main refere-se ao arquivo de layout res/layout/main.xml.

  4. Execute o app.

Você verá o seguinte: