TableLayout no Android, Entendendo e Utilizando

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /TableLayout no Android, Entendendo e Utilizando

TableLayout no Android, Entendendo e Utilizando

Vinícius Thiengo23/12/2013
(6798) (21) (25)
Go-ahead
"O início de um hábito é como um fio invisível, mas a cada vez que o repetimos o ato reforça o fio, acrescenta-lhe outro filamento, até que se torna um enorme cabo, e nos prende de forma irremediável, no pensamento e ação."
Orison Swett Marden
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Opa! Blz?

Nesse vídeo apresento o componente visual do Android, TableLayout (e TableRow). Esse componente de layout é muito utilizado para trabalhar com formulários (apesar de eu preferir trabalhar com LinearLayout e o atributo hint nos widgets do formulário). Note a verdadeira funcionalidade dos atributos stretchCoumns e shrinkColumns e como se realiza a mesclagem (merge) de colunas utilizando o atributo dos widgets internos ao TableRow, layout_span. Outra coisa que cito é o problema de meclagem de linhas que é trivial no elemento <table> do HTML, pois bem, se não me engano somente há mesclagem de linhas no Android quando se utiliza o componente de layout GridView (assunto para próximos posts), logo o componente TableLayout não suporta a característica de mesclagem de linhas. Mas enfim, vou evitar muitas delongas e deixar você assistir ao vídeo.

Note que houve alteração no esquema de componentes visuais que estamos utilizando, ele está também no .zip do projeto para download juntamente com o esquema do TableLayout.

O link para download do projeto se encontra logo abaixo no post.

Página do TableLyout no site do Android

Página do TableRow no site do Android

Segue imagem esquema do TableLayout:

TableLayout no Android, Entendendo e Utilizando

Compartilhe, comente! Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

Ciclo de Vida de Uma Atividade no AndroidCiclo de Vida de Uma Atividade no AndroidAndroid
View: Entendendo os Componentes Visuais no AndroidView: Entendendo os Componentes Visuais no AndroidAndroid
Entendendo e Utilizando o FrameLayout no AndroidEntendendo e Utilizando o FrameLayout no AndroidAndroid
LinearLayout no Android, Entendendo e UtilizandoLinearLayout no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook

Comentários Blog (21)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
01/12/2015
Thiengo, beleza?
Tô precisando preencher uma tabela por coluna e tô tendo muita dificuldade pra fazer isso com o TableLayout, tem alguma ideia de como posso fazer isso, mesmo que seja utilizando outro objeto?
Abraço.
Responder
Vinícius Thiengo (0) (0)
02/12/2015
Fala Luhan, blz?
Está com a table já construída no xml, porém precisa de número de colunas de forma dinâmica ou não, serão td fixo mesmo? Em ambos os casos tentou como tb no vídeo, construir a table e tableRow com suas views de forma dinâmica?

Dê uma olhada nesse exemplo de inserção dinâmica (http://stackoverflow.com/a/18207894/2578331). Abraço
Responder
Luhan Mairink (1) (0)
02/12/2015
Eu estou inserindo as views dinamicamente no TableLayout (criado no XML), porém, preciso preencher coluna por coluna, ou seja, preencher uma coluna inteira, voltar para a primeira linha e preencher a próxima coluna. Tem como fazer isso?
Responder
Vinícius Thiengo (0) (0)
04/12/2015
Tem como sim Luhan, porém isso é somente lógica de programação. Crie um array de TableRow e vai iterando por ele e colocando as Views nas colunas corretas (as colunas do TableRow são as Views de conteúdo - EditText, TextView, Outro Layout, ...). Abraço
Responder
dtiburcio (1) (0)
16/07/2015
Não consegui ainda cercar cada TextView com bordas finas para ficar como uma tabela, nos exemplos que achei a borda fica muito larga e não consegui mudar
Responder
Vinícius Thiengo (0) (0)
16/07/2015
Fala dtiburcio, blz?
Veja se essa resposta lhe ajuda (http://stackoverflow.com/a/4046486/2578331). Mas utilizando Views (<View/>) é possível, porém terá um pouco mais de código, provavelmente para cada celula. Tente no TableRow colocar uma:

<View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#000"/>

Para ver se consegue o efeito desejado ao menos na linha horizontal. Abraço
Responder
16/07/2015
Preciso fazer isto em programação, mas valeu a dica, vou tentar
Responder
Vinícius Thiengo (0) (0)
17/07/2015
Não, na marcação XML apenas, no Java não há necessidade, a não ser que estiver adicionando linhas via Java code tb, dessa forma tb terá de acrescentar as Views. Abraço
Responder
Elias Martins Ferreira (1) (0)
08/05/2015
Bom dia Thiengo, tudo bem?
queria saber se vc tem um exemplo de tablelayot dinâmico
estou tentando fazer aqui mas não está funcionando
quero preencher as colunas com informações do banco
pesquisei alguns exemplos mas não deram certo também
se tiver algum exemplo eu te agradeço, abs.
Responder
Vinícius Thiengo (1) (0)
09/05/2015
Fala Elias, blz?
Se não me engano no vídeo mostro tb como criar o Table via Java API (dinâmico), porém é um exemplo bem simples. Encontrei esse post (code.tutsplus.com/tutorials/android-user-interface-design-table-layouts--mobile-4788) que tem um exemplo um pouco melhor, porém ainda sem loop, vc teria de adaptar a sua necessidade. A resposta certa desse outro link (stackoverflow.com/questions/17031006/how-add-and-delete-rows-to-table-layout-in-java-programically) já é com loop. Abraço
Responder
Elias Martins (1) (0)
09/05/2015
vlw Thiengo, obrigado pela ajuda.
Responder
07/07/2015
Thiengo, usei este link como referência e ficou bem, exceto que tenho uma linha detalhe com os valores de uma pessoa e antes tela preciso colocar numa linha só o nome ocupando o lugar de todas as colunas. Ele está considerando que este nome é a primeira coluna dos valores e com isto tanto os cabeçalhos das colunas quanto as colunas ficam pequenas e continuando na linha de baixo. Eu preciso assim:

Nome da pessoa
VAL1 VAL2 VAL3 VAL4 VAL5 VAL6 VAL7 VAL8

mas o nome está certo mas as demais colunas todas misturadas.

Lembro que neste link tem que colocar a TableRow dentro de um ScrollView senão a tela não vai rolar.

Obrigado
Responder
Vinícius Thiengo (0) (0)
08/07/2015
Fala Daniel, blz?
Já utilizou o layout_span no TextView que terá o nome quando ele está sozinho dentro da primeira linha? Veja a dica nesse link (http://stackoverflow.com/a/2713323/2578331). Coloque a linha, somente o TextView de nome dentro dela e então aplica o layout_span no TextView de acordo com a quantidade de colunas que vai ter nas outras linhas. Abraço
Responder
08/07/2015
THiengo, se tem alguém que odeie este stackoverflow, sou eu, acho que fiquei idoso mesmo, por que ser tão feio e confuso? Tentei de todo jeito, mas agora NullPointerException ao mover o valor para o params.span, nada do que faço dá certo. Se a linha do nome se chama RowNome e a das estatísticas se chama RowValor, como ficariam o comandos? Desculpe abusar, mas já pesquisei demais e nada dá certo.
Responder
Vinícius Thiengo (0) (0)
10/07/2015
Daniel, coloque aqui o XML que vc está utilizando para montar esse layout. Abraço
Responder
14/07/2015
Thiengo, assisti seu vídeo de novo e vi que a solução era não colocar a linha com o nome como uma TableRow e sim direto no TableLayout e deu certo. Agora preciso aprender a colocar separadores de linhas e colunas para melhor visualixação, vou continuar assistindo amanhã. Obrigado
Responder
Vinícius Thiengo (0) (0)
15/07/2015
Show de bola, Daniel
Responder
02/03/2015
Fala, Thiengo! Mais um ótimo vídeo e eu aqui, novamente, com uma dúvida k

Então... Usar o View como forma de definir uma borda horizontal foi uma solução bem simples e efetiva, existe algo do tipo pra definir bordas também para colunas?
Responder
Vinícius Thiengo (0) (0)
03/03/2015
Fala Danilo, blz?
Com o View vc tb consegue criar as bordas verticais, dê uma olhada na resposta certa desse link no stackoverflow (http://stackoverflow.com/questions/13189790/how-to-draw-horizontal-and-vertical-line-in-table-layout). Abraço
Responder
02/02/2015
Eae Vinícius, interessante esse TableLayout, parece ser mais usado para layouts Horizontais tipo modo "paisagem"  ou tem algum outro uso específico(benefício)? Abç
Responder
Vinícius Thiengo (1) (0)
03/02/2015
Fala Davi, blz?
Eu particularmente não precisei ainda de construir uma tabela nas APPs que desenvolvi, então assumo que o TableLayout será mesmo preciso e eficiente quando o layout for em forma de tabela ou ao menos ele tiver que ter uma tabela, nada de especial. Abraço
Responder