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
.
Observação: para melhor desempenho e suporte a ferramentas, crie seu layout com ConstraintLayout.

Todos os filhos de um LinearLayout
são
empilhados um após o outro. Portanto, uma lista vertical terá somente um filho por
linha, independentemente da largura, e uma lista horizontal terá altura de apenas uma
linha (a altura do filho mais alto, mais preenchimento). Um LinearLayout
respeita margens entre filhos
e a gravidade (alinhamento à direita, no centro ou à esquerda) de cada filho.
Ponderação do layout
LinearLayout
também é compatível com a atribuição de uma
ponderação a filhos individuais com o atributo android:layout_weight
.
Este atributo confere um valor de “importância” a uma visualização em
relação à quantidade de espaço que ela deve ocupar na tela. Um valor de ponderação maior permite que ela se expanda
para preencher qualquer espaço restante na visualização pai.
As visualizações filhas podem especificar um valor de ponderação. Com isso, todo o espaço restante no grupo de visualizações será
designado aos filhos na proporção da própria ponderação declarada. 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
como "0dp"
(para um
layout
horizontal). Em seguida, defina a 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:
- Se houver três campos de texto e dois deles tiverem uma ponderação 1, enquanto o outro não tiver ponderação, o terceiro campo de texto não será expandido. Em vez disso, esse terceiro campo de texto ocupará somente a área exigida pelo conteúdo. Os outros dois campos se expandirão igualmente para preencher o espaço restante depois que os três campos forem medidos.
- Se houver três campos de texto e dois deles tiverem uma ponderação 1, enquanto o terceiro campo tiver uma ponderação 2 (em vez de 0), o último será declarado mais importante que os outros e ficará com metade do espaço total restante, enquanto os dois primeiros compartilharão o resto igualmente.
O snippet de código a seguir mostra como as ponderações de layout podem funcionar em uma atividade "enviar mensagem". Cada campo Para, linha Assunto e botão Enviar ocupa somente a altura necessária. Essa configuração permite que a própria mensagem ocupe 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="right" android:text="@string/send" /> </LinearLayout>
Para ver detalhes sobre os atributos disponíveis para cada visualização filha de um LinearLayout
, consulte LinearLayout.LayoutParams
.