Recurso de layout

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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 vai 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, 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.

Não presuma que toda derivação do ViewGroup aceita Views aninhadas. Alguns ViewGroups são implementações da classe AdapterView que determina os filhos somente de um Adapter.

atributos:

android:id
ID de recurso. Um nome de recurso exclusivo para o elemento que pode ser usado para acessar uma referência para o ViewGroup do seu aplicativo. Confira 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"). Verifique 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"). Verifique os valores válidos abaixo.

Mais atributos têm suporte da classe base ViewGroup, e muitos outros têm suporte de cada implementação do ViewGroup. Para 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 de recurso. Um nome de recurso exclusivo para o elemento que pode ser usado para acessar uma referência à View do seu aplicativo. Saiba mais 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"). Confira 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"). Confira os valores válidos abaixo.

Mais atributos têm suporte da classe base View, e muitos outros têm suporte de cada implementação do View. Leia Layouts para mais informações. Para 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 nesse layout.

atributos:

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

Você pode incluir quaisquer outros atributos de layout no <include> que tenham suporte do elemento raiz no layout incluído, eles vão substituir os definidos no elemento raiz.

Cuidado: se você quiser substituir os atributos de layout usando a tag <include>, substitua android:layout_height e android:layout_width para que outros atributos de layout sejam ativados.

Outra forma de incluir um layout é usar o ViewStub. Essa é 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 saber mais sobre o uso do ViewStub, leia Como carregar visualizações sob demanda.

<merge>
Um elemento raiz alternativo que não é renderizado na hierarquia de layout. Usá-lo como o elemento raiz é útil quando você sabe que ele vai 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 usando <include> e ele 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 adição +, indica que esse é um novo ID de recurso, e a ferramenta aapt vai criar um número inteiro do novo recurso na classe R.java, se ainda 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 a 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 adição 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 com suporte do Android (px, dp, sp, pt, in, mm) ou com as palavras-chave abaixo:

ValorDescrição
match_parent Define a dimensão que corresponde com a dimensão do elemento pai. Adicionado no nível 8 da API para descontinuar 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 os aplicar 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 vai 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);
}
Consulte também: