Android: Tentando entender o Android: layout_weight
-
26-09-2019 - |
Pergunta
Estou tentando dividir uma página em três partes. Eu gostaria de fazê -lo em valores percentuais, no entanto, isso não é suportado pelo Android. Em vez disso, tenho que usar android:layout_weight
. Mas tenho dificuldade em entender e acertar. Especialmente como o tamanho real é calculado. Existe uma maneira de obter um valor percentual (0..100%) android:layout_weight
?
Passei por alguns casos (consulte a captura de tela em anexo) para descrever os problemas. Os campos coloridos são todos <LinearLayout>
com android:layout_height="fill_parent"
, porque quero que a tela cheia seja dividida entre eles.
Caso 1
Ok, simples. Todo <LinearLayout>
recebe 33%.
Caso 2
Ups?! O primeiro (amarelo) <LinearLayout>
desaparece completamente? Por quê?
Caso 3
Confuso novamente. O amarelo <LinearLayout>
está de volta. No entanto, os dois primeiros <LinearLayout>
Com o peso mais pesado, fica menor? O que está acontecendo?
Caso 4
Não tenho absolutamente nenhuma idéia do que é a matemática por trás de tudo isso.
Solução
Existe uma maneira de obter um valor percentual (0..100%) do Android: layout_weight?
Claro. Faça com que eles somem 100.
Para o seu "valor percentual", você quer o android:layout_height
dos itens individuais dentro do LinearLayout
ser 0px
.
Outras dicas
Quando você usa Android: Layout_Height = "FILL_PARENT" para as barras, você não está deixando nenhum espaço disponível. (Como eles estão preenchendo o pai.) Como todos os 3 estão definidos para preencher, a altura solicitada é na verdade 3x a altura dos pais, portanto os pesos estão sendo aplicados a um espaço restante negativo. Isso explica o comportamento estranho que você está vendo e por que definir o layout_height para 0px o resolve.