Recurso de layout

Um recurso de layout define a arquitetura da IU em uma atividade ou um componente de uma IU.

localização do arquivo:
res/layout/filename.xml
O nome do arquivo será usado como o ID do recurso.
tipo de dados do recurso compilado:
Ponteiro de recurso para um recurso View (ou subclasse).
referência de recurso:
Em Java: R.layout.filename
Em XML: @[package:]layout/filename
sintaxe:
    <?xml version="1.0" encoding="utf-8"?>
    <ViewGroup
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [ViewGroup-specific attributes] >
        <View
            android:id="@[+][package:]id/resource_name"
            android:layout_height=["dimension" | "match_parent" | "wrap_content"]
            android:layout_width=["dimension" | "match_parent" | "wrap_content"]
            [View-specific attributes] >
            <requestFocus/>
        </View>
        <ViewGroup >
            <View />
        </ViewGroup>
        <include layout="@layout/layout_resource"/>
    </ViewGroup>
    

Observação: o elemento raiz pode ser um elemento ViewGroup ou View ou <merge>, mas é necessário que exista apenas um elemento raiz e ele precisa conter o atributo xmlns:android com o namespace android, conforme mostrado.

elementos:
<ViewGroup>
Um contêiner para outros elementos View. Há muitos tipos diferentes de objetos ViewGroup e cada um permite especificar o layout dos elementos filhos de maneiras diferentes. Diferentes tipos de objetos ViewGroup incluem LinearLayout, RelativeLayout e FrameLayout.

Você não deve presumir que qualquer derivação de ViewGroup aceitará Views aninhadas. Alguns ViewGroups são implementações da classe AdapterView que determina os filhos somente de um Adapter.

atributos:

android:id
ID do recurso. Um nome de recurso exclusivo para o elemento, que você pode usar para conseguir uma referência ao ViewGroup do seu aplicativo. Veja mais informações sobre o valor para android:id abaixo.
android:layout_height
Dimensão ou palavra-chave. Obrigatório. A altura do grupo, como um valor de dimensão (ou recurso de dimensão) ou uma palavra-chave ("match_parent" ou "wrap_content"). Veja os valores válidos abaixo.
android:layout_width
Dimensão ou palavra-chave. Obrigatório. A largura do grupo, como um valor de dimensão (ou recurso de dimensão) ou uma palavra-chave ("match_parent" ou "wrap_content"). Veja os valores válidos abaixo.

Mais atributos são suportados pela classe base ViewGroup, e muitos outros são suportados por cada implementação do . Para ver uma referência de todos os atributos disponíveis, consulte a documentação de referência para a classe ViewGroup (por exemplo, Atributos LinearLayout XML).

<View>
Um componente de IU individual, geralmente chamado de widget. Diferentes tipos de objetos View incluem TextView, Button e CheckBox.

atributos:

android:id
ID do recurso. Um nome de recurso exclusivo para o elemento que pode ser usado para conseguir uma referência para o View do seu aplicativo. Veja mais informações sobre o valor para android:id abaixo.
android:layout_height
Dimensão ou palavra-chave. Obrigatório. A altura do elemento, como um valor de dimensão (ou recurso de dimensão) ou uma palavra-chave ("match_parent" ou "wrap_content"). Veja os valores válidos abaixo.
android:layout_width
Dimensão ou palavra-chave. Obrigatório. A largura do elemento, como um valor de dimensão (ou recurso de dimensão) ou uma palavra-chave ("match_parent" ou "wrap_content"). Veja os valores válidos abaixo.

Mais atributos são suportados pela classe base View, e muitos outros são suportados por cada implementação do . Leia Layouts para mais informações. Para ver uma referência de todos os atributos disponíveis, consulte a documentação de referência correspondente (por exemplo, Atributos TextView XML).

<requestFocus>
Qualquer elemento que represente um objeto View pode incluir esse elemento vazio, o que dá foco inicial ao elemento pai na tela. Você pode ter apenas um desses elementos por arquivo.
<include>
Inclui um arquivo de layout nesse layout.

atributos:

layout
Recurso de layout. Obrigatório. Referência a um recurso de layout.
android:id
ID do recurso. Modifica o ID dado à visualização raiz no layout incluído.
android:layout_height
Dimensão ou palavra-chave. Modifica a altura atribuída à visualização raiz no layout incluído. Só será eficaz se android:layout_width também for declarado.
android:layout_width
Dimensão ou palavra-chave. Modifica a altura atribuída à visualização raiz no layout incluído. Só será eficaz se android:layout_height também for declarado.

Você pode incluir quaisquer outros atributos de layout no <include> que sejam compatíveis com o elemento raiz no layout incluído, e eles modificarão os definidos no elemento raiz.

Atenção: se você quiser modificar os atributos de layout usando a tag <include>, modifique android:layout_height e android:layout_width para que outros atributos de layout sejam ativados.

Outra forma de incluir um layout é usar o ViewStub. Trata-se de uma visualização leve que não consome espaço de layout até que você a infle especificamente. Nesse ponto, ela inclui um arquivo de layout definido pelo atributo android:layout. Para ver mais informações sobre o uso do ViewStub, leia Como carregar visualizações sob demanda.

<merge>
Um elemento raiz alternativo que não é desenhado na hierarquia de layout. Usá-lo como o elemento raiz é útil quando você sabe que esse layout será colocado em um layout que já contém a visualização pai apropriada para conter os filhos do elemento <merge>. Isso é útil principalmente quando você planeja incluir esse layout em outro arquivo de layout usando <include> e esse layout não exige um contêiner ViewGroup diferente. Para mais informações sobre a mesclagem de layouts, leia Como reutilizar layouts com <include/>.

Valor para android:id

Para o valor do ID, use este formulário de sintaxe: "@+id/name". O sinal de mais +, indica que esse é um novo ID de recurso, e a ferramenta aapt criará um número inteiro de novo recurso na classe R.java, se já não houver um. Por exemplo:

    <TextView android:id="@+id/nameTextbox"/>
    

O nome nameTextbox agora é um ID de recurso anexado a este elemento. Em seguida, você pode consultar o TextView, a que o ID está associado em Java:

Kotlin

    val textView: TextView? = findViewById(R.id.nameTextbox)
    

Java

    TextView textView = findViewById(R.id.nameTextbox);
    

Esse código retorna o objeto TextView.

No entanto, se você já tiver definido um recurso de ID, e ele ainda não tiver sido usado, aplique-o a um elemento View excluindo o símbolo de mais no valor android:id.

Valor para android:layout_height e android:layout_width:

O valor de altura e largura pode ser expresso usando qualquer uma das unidades de dimensão compatíveis com Android (px, dp, sp, pt, in, mm) ou com as seguintes palavras-chave:

ValorDescrição
match_parent Define a dimensão que corresponde com a dimensão do elemento pai. Adicionado na API de nível 8 para suspender o uso de fill_parent.
wrap_content Define a dimensão somente para o tamanho necessário para ajustar o conteúdo desse elemento.

Elementos de visualização personalizada

Você pode criar seus próprios elementos View e ViewGroup e aplicá-los da mesma forma que um elemento de layout padrão. Você também pode especificar os atributos aceitos no elemento XML. Para saber mais, consulte o guia do desenvolvedor para componentes personalizados.

Exemplo:
Arquivo XML salvo em res/layout/main_activity.xml:
    <?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:orientation="vertical" >
        <TextView android:id="@+id/text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Hello, I am a TextView" />
        <Button android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hello, I am a Button" />
    </LinearLayout>
    

Este código de aplicativo carregará o layout para um Activity, no método onCreate():

Kotlin

    public override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)
    }
    

Java

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }
    
Veja também: