Criar um layout linear

Experimente trabalhar com o Compose
O Jetpack Compose é o kit de ferramentas de IU recomendado para Android. Aprenda a trabalhar com layouts no Compose.

LinearLayout é uma visualização em grupo que alinha todos os filhos em uma única direção vertical ou horizontal. Você pode especificar a direção do layout com o android:orientation atributo.

Imagem mostrando um layout dividido em três fatias verticais
Figura 1. Um LinearLayout com três filhos orientados horizontalmente.

Todos os filhos de um LinearLayout são empilhados um após o outro. Portanto, uma lista vertical tem apenas um filho por linha, independentemente da largura. Uma lista horizontal tem apenas uma linha de altura, que é a altura do filho mais alto, mais o 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 android:layout_weight atributo. Esse atributo confere um valor de "importância" a uma visualização em relação à quantidade de espaço que ela ocupa na tela. Um valor de ponderação maior permite que ela se expanda para preencher o espaço restante na visualização da família. As visualizações filhas podem especificar um valor de ponderação, e todo o espaço restante na visualização em grupo será designado aos filhos proporcionalmente, com base na 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 de cada visualização 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: Veja estes exemplos:

  • Suponha que você tenha três campos de texto: dois com um valor de ponderação de 1 e um terceiro com o valor de ponderação padrão de 0. O terceiro campo de texto, com o valor de ponderação de 0, ocupa apenas a área exigida pelo conteúdo. Os outros dois campos de texto, com o valor de ponderação de 1, se expandem igualmente para preencher o espaço restante depois que o conteúdo de todos os três campos é medido.
  • Se, em vez disso, você tiver três campos de texto em que dois têm um valor de ponderação de 1 e o terceiro tem uma ponderação de 2, o espaço restante após o conteúdo de todos os três campos ser medido será alocado da seguinte maneira: metade para o campo com o valor de ponderação de 2 e metade dividida igualmente entre os campos com o valor de ponderação de 1.

A figura e o snippet de código a seguir mostram 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. A área de mensagem ocupa o restante da altura da atividade.

Uma imagem mostrando três EditTexts e um botão em um LinearLayout orientado verticalmente
Figura 2. Três campos de texto e um botão em um `LinearLayout` orientado verticalmente LinearLayout.
<?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 modo infantil de um LinearLayout, consulte LinearLayout.LayoutParams.