LinearLayout
é um grupo de visualizações que alinha todos os filhos em uma única direção vertical ou
horizontal. Você pode especificar a direção do layout com o
atributo
android:orientation
.
Todos os filhos de uma LinearLayout
são empilhados um após o outro.
Assim, uma lista vertical só tem um filho por linha, independente da largura. Uma
lista horizontal tem apenas uma linha de altura, a altura do filho mais alto
mais o padding. Um LinearLayout
respeita as margens entre
filhos e a gravidade (alinhamento à direita, no centro ou
esquerda) de cada filho.
Espessura do layout
LinearLayout
também permite atribuir um peso a
filhos individuais com o
atributo
android:layout_weight
. Esse atributo atribui um valor de "importância" a uma visualização em termos de
quanto espaço ela ocupa na tela. Um valor de ponderação maior permite que ela se expanda
para preencher o espaço restante na visualização mãe. As visualizações filhas podem especificar um valor de
peso, e qualquer espaço restante no grupo de visualizações é atribuído aos filhos
proporcionalmente, com base no peso declarado. A ponderação padrão é zero.
Distribuição igual
Para criar um layout linear em que cada filho usa a mesma quantidade de espaço
na tela, defina a
android:layout_height
de cada visualização como "0dp"
para um layout vertical ou a
android:layout_width
de cada visualização como "0dp"
para um layout horizontal. Em seguida, defina o
android:layout_weight
de cada visualização como "1"
.
Distribuição desigual
Você também pode criar layouts lineares em que os elementos filhos usam diferentes quantidades de espaço na tela. Confira estes exemplos:
- Suponha que você tenha três campos de texto: dois com valor de ponderação 1 e um terceiro com peso padrão 0. O terceiro campo, com o valor de ponderação 0, ocupa apenas a área exigida pelo conteúdo. Os outros dois campos, com o valor de ponderação 1, se expandem igualmente para preencher o espaço restante depois que o conteúdo dos três campos for medido.
- Se, em vez disso, você tiver três campos de texto em que dois têm peso 1 e o terceiro tem peso 2, o espaço que permanece depois que o conteúdo dos três campos é medido é alocado da seguinte maneira: metade para o campo com o valor de ponderação 2 e metade dividida igualmente entre os campos com o valor de ponderação 1.
A figura e o snippet de código abaixo mostram como as ponderações de layout podem funcionar em uma atividade de "enviar mensagem". Cada campo Para, linha Assunto e botão Enviar ocupa somente a altura necessária. A área de mensagem ocupa o restante da altura da atividade.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="end" android:text="@string/send" /> </LinearLayout>
Para ver detalhes sobre os atributos disponíveis para cada visualização filha de um
LinearLayout
, consulte
LinearLayout.LayoutParams
.