Antes de começar,
vou responder a esta pergunta.
Eu só sei
de dois ViewGroups:
LinearLayouts
e RelativeLayouts.
A questão aqui...
é que estes espaço
deve ser dividido ao meio.
Usando layout_weight
fica bem fácil.
Bem, vamos ver o código.
Não estou mais
trabalhando em Java,
então vou até a aba
activity_main.xml.
Aqui está meu XML.
Eu vou começar
colando todo este código
em outro LinearLayout.
Este é o LinearLayout pai...
dos meus dois
LinearLayouts menores.
E vou trazer estas duas linhas
aqui para cima...
porque elas precisam
estar anexadas à rootView.
Adiciono uma chave
de fechamento.
O Android Studio
fez automaticamente
uma tag de fechamento
para mim aqui.
Vou simplesmente
recortá-la...
e colá-la no final.
Certo,
um sublinhado vermelho.
O erro diz...
que devo definir
layout_height e layout_width.
Opa! Vamos fazer isso.
Como esta é a rootView,
usarei match_parent.
Certo, eu tenho
um LinearLayout
envolvendo
um LinearLayout filho.
Se eu pré-visualizar...
É quase a mesma coisa.
Certo, então vou copiar...
tudo no LinearLayout
do time A...
e colarei sob o time A.
Este será o LinearLayout
do time B.
As coisas estão começando
a ficar meio bagunçadas.
Vou apertar Cmd+A,
ou "Selecionar tudo",
e vou usar o atalho de teclado
Cmd+Option+L
para formatar meu código.
No Windows, é Ctrl+Alt+L.
Agora está melhor.
Quero garantir que você está
entendendo o que houve.
No topo,
há um LinearLayout raiz.
Começa aqui e,
rolando para o fim,
termina aqui.
Dentro do LinearLayout raiz -
vou voltar para cima -
tem um layout filho,
que começa aqui -
vou rolar devagar -
e termina aqui.
É do time A.
E tem outro
LinearLayout filho,
que começa aqui -
vou rolar devagar -
e termina aqui,
que é do time B.
Percebi algo vermelho
lá em cima,
então vou voltar
para ver o erro.
"Orientação errada,
não especificada
e padrão é horizontal,
mas layout tem
muitos filhos
e a largura de pelo menos um
é igual à do pai."
Eu quero mesmo
que seja horizontal.
Mas vamos especificar
a orientação.
Isto não é de fato necessário,
pois o padrão é horizontal,
mas é bom deixar explícito.
E dizia algo sobre os filhos
estarem se sobrepondo.
Vou pré-visualizar.
Não parece ter mudado
muita coisa,
embora eu tenha tido o trabalho
de copiar outro LinearLayout.
Pode ter a ver com o erro
que acabei de ler.
Dizia que é
um layout horizontal,
que tenta justapor
estes LinearLayouts,
mas que o layout_width
do LinearLayout
é match_parent,
o que toma a tela.
Então meu primeiro LinearLayout
está tomando a tela toda...
e o outro está justaposto
em algum lugar fora da tela.
Vamos pensar
no que pretendemos.
Queremos que os layouts
tomem o mesmo espaço
e fiquem lado a lado.
Eis o que teremos que usar:
layout_weights.
Vou até o primeiro
LinearLayout...
e adicionarei
"layout_weight=1".
Também vou definir
sua largura como 0.
Já dá para ver que temos
dois LinearLayouts
que só não estão
sendo bem exibidos.
Mas já melhorou.
Também porei layout_weight
no meu segundo LinearLayout,
este aqui.
Vou rolar para baixo...
Aqui está o segundo.
Vou fazer
a mesmíssima coisa.
Definirei que ele também
tem peso 1,
ou seja,
layout_weights iguais,
e definirei a largura como 0.
Bom, a razão para definir
as larguras como 0...
é que, se os dois lados
não tomam nenhum espaço,
todo o espaço extra,
ou seja, a tela toda,
será dividido ao meio
e distribuído aos dois,
pois ambos têm
o mesmo peso.
Se isso for meio confuso,
deixei alguns vídeos
nas "Notas do instrutor"
sobre layout_weight.
Bom, está bem legal,
só que diz que é do time A.
Vou rolar a tela
e mudar isso.
Pronto, mudei para time B.
Você pode ter percebido
que tem outro erro aqui.
Este erro acontece
por termos um ID duplicado.
Lembre-se,
eu copiei e colei um código.
Há duas coisas tentando
ter o mesmo ID,
"team_a_score".
Vou mudar
para "team_b_score".
Está bem bonito!
Está meio pequeno,
vou dar um zoom,
mas diz time B aqui.
Todos os botões
e TextViews estão certos,
então vou tentar rodar
no meu celular.
Pronto. Está bem bonito.
Os botões do time A
estão respondendo,
que ótimo.
E os do time B, bem...
também respondem.
Que coisa.
Mas nós só queríamos
consertar o XML,
não nos importamos
com o Java.
Agora que o XML funciona,
que tal consertar o Java?