Referência de atributos de ferramentas (visualizações)

Conceitos e implementação do Jetpack Compose

O Android Studio oferece suporte a vários atributos XML no namespace tools, que habilitam recursos de tempo de design, como qual layout mostrar em um fragmento, ou comportamentos de tempo de compilação, como o modo de redução aplicado aos recursos XML. Quando você cria seu app, as ferramentas de build removem esses atributos para que não afetem o tamanho do APK ou o comportamento do ambiente de execução.

Para usar esses atributos, adicione o namespace tools ao elemento raiz de cada arquivo XML em que você quer que eles sejam usados, conforme mostrado a seguir:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Atributos de tratamento de erros

O atributo a seguir ajuda a suprimir mensagens de aviso de lint:

tools:targetApi

Destinado a: qualquer elemento

Usado por: lint

Esse atributo funciona da mesma forma que a anotação @TargetApi no código Java. Ele permite especificar o nível da API (como um número inteiro ou um codinome) que oferece suporte a esse elemento.

Isso informa às ferramentas que você acredita que esse elemento, e qualquer filho, vai ser usado somente no nível da API especificado ou em níveis mais recentes. Isso impede que o lint avise se esse elemento ou os atributos dele não estão disponíveis no nível de API especificado como minSdkVersion.

Por exemplo, você pode usar esse atributo porque GridLayout está disponível apenas no nível 14 da API e versões mais recentes, mas esse layout não é usado no código para versões anteriores:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="14" >

No entanto, recomendamos o uso do GridLayout da Biblioteca de Suporte.

Atributos de visualização no tempo de design

Os seguintes atributos definem características de layout que são visíveis apenas na visualização do layout do Android Studio.

tools: em vez de android:

Destinado a: <View>

Usado por: Layout Editor do Android Studio

Você pode inserir dados de amostra na visualização de layout usando o prefixo tools: em vez de android: com qualquer atributo <View> do framework do Android. Isso é útil quando o valor do atributo não é preenchido até o momento de execução e você quer verificar o efeito na visualização do layout.

Por exemplo, se o valor do atributo android:text for definido no momento de execução ou você quiser ver o layout com um valor diferente do padrão, adicione tools:text para especificar textos somente para a visualização do layout.

O atributo tools:text define o Google Voice como o valor da
      visualização do layout.
Figura 1. O atributo tools:text define "Google Voice" como o valor da visualização do layout.

Você pode adicionar o atributo de namespace android:, que é usado no momento da execução, e o atributo tools: correspondente, que modifica o de tempo de execução apenas na visualização do layout.

Você também pode usar um atributo tools: para desfazer uma configuração de atributo apenas para a visualização do layout. Por exemplo, caso você tenha um FrameLayout com dois filhos, mas queira verificar somente um na visualização do layout, é possível configurar um deles para que fique invisível, conforme mostrado a seguir:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="First" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Second"
    tools:visibility="invisible"  />

Ao usar o Layout Editor na visualização de design, a janela Properties permite editar alguns atributos de visualização do tempo de design. Cada atributo de tempo de design é indicado com um ícone de chave inglesa Ícone de
chave inglesa ao lado do nome para que possa ser distinguido do atributo real com o mesmo nome.

tools:context

Destinado a: qualquer <View> raiz

Usado por: lint, Layout Editor do Android Studio

Esse atributo declara com qual atividade esse layout está associado por padrão. Isso ativa recursos no editor ou na visualização do layout que exigem conhecimento da atividade, como qual é o tema do layout na visualização e onde inserir gerenciadores onClick gerados com uma correção rápida, como mostrado na Figura 2.

A correção rápida
    para o atributo onClick só funciona caso você tenha definido o tools:context
Figura 2. A correção rápida para o atributo onClick só funciona caso você tenha definido o tools:context.

Você pode especificar o nome da classe de atividade usando um ponto como prefixo, como no arquivo de manifesto, excluindo o nome completo do pacote.

Exemplo:

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity" >

tools:itemCount

Destinado a: <RecyclerView>

Usado por: Layout Editor do Android Studio

Para um determinado RecyclerView, esse atributo especifica o número de itens que o Layout Editor precisa renderizar na janela Preview.

Exemplo:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:itemCount="3"/>

tools:layout

Destinado a: <fragment>

Usado por: Layout Editor do Android Studio

Esse atributo declara qual layout você quer que a visualização desenhe dentro do fragmento, já que ela não pode executar o código de atividade que normalmente aplica o layout.

Exemplo:

<fragment android:name="com.example.main.ItemListFragment"
    tools:layout="@layout/list_content" />

tools:listitem, tools:listheader, tools:listfooter

Destinado a: <AdapterView> (e subclasses, como <ListView>)

Usado por: Layout Editor do Android Studio

Esses atributos especificam qual layout vai aparecer na visualização do layout para os itens, cabeçalho e rodapé de uma lista. Todos os campos de dados no layout são preenchidos com conteúdo numérico, como "Item 1", para que os itens da lista não sejam repetitivos.

Exemplo:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:listitem="@layout/sample_list_item"
    tools:listheader="@layout/sample_list_header"
    tools:listfooter="@layout/sample_list_footer" />

tools:showIn

Destinado a: qualquer <View> raiz em um layout referenciado por <include>

Usado por: Layout Editor do Android Studio

Esse atributo permite apontar para um layout que usa <include>. Assim, é possível visualizar e editar esse arquivo da forma como ele aparece enquanto incorporado no layout pai.

Exemplo:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:showIn="@layout/activity_main" />

Agora, a visualização do layout mostra esse layout TextView da forma como ele aparece dentro do layout activity_main.

tools:menu

Destinado a: qualquer <View> raiz

Usado por: Layout Editor do Android Studio

Esse atributo especifica qual menu a visualização do layout mostra na barra de apps. O valor pode ser um ou mais IDs de menu, separados por vírgulas, sem @menu/ ou qualquer prefixo de ID e sem a extensão .xml.

Exemplo:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:menu="menu1,menu2" />

tools:minValue, tools:maxValue

Destinado a: <NumberPicker>

Usado por: Layout Editor do Android Studio

Esses atributos definem valores mínimos e máximos para uma visualização NumberPicker.

Exemplo:

<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/numberPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:minValue="0"
    tools:maxValue="10" />

tools:openDrawer

Destinado a: <DrawerLayout>

Usado por: Layout Editor do Android Studio

Esse atributo permite abrir um DrawerLayout na visualização.

Você também pode modificar a maneira como o editor renderiza o layout transmitindo um dos seguintes valores:

Tabela 1. Valores para modificar a forma como o Layout Editor renderiza um DrawerLayout.

ConstanteValorDescrição
end800005Envie o objeto para o final do contêiner, sem mudar o tamanho dele.
left3Envie o objeto para a esquerda do contêiner, sem mudar o tamanho dele.
right5Envie o objeto para a direita do contêiner, sem mudar o tamanho dele.
start800003Envie o objeto para o início do contêiner, sem alterar o tamanho dele.

Exemplo:

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="start" />

Recursos "@tools:sample/*"

Destinado a: qualquer visualização que ofereça suporte a texto ou imagens da interface

Usado por: Layout Editor do Android Studio

Esse atributo permite injetar imagens ou dados de marcador na visualização. Por exemplo, para testar como o layout se comporta antes de terminar o texto da interface do app, use o texto de preenchimento da seguinte maneira:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="@tools:sample/lorem" />

A tabela a seguir descreve os tipos de dados de marcadores que podem ser injetados nos layouts.

Tabela 2. Dados de marcadores de posição para layouts

Valor do atributoDescrição dos dados do marcador
@tools:sample/full_names Nomes completos gerados aleatoriamente pela combinação de @tools:sample/first_names e @tools:sample/last_names
@tools:sample/first_names Nomes comuns
@tools:sample/last_names Sobrenomes comuns
@tools:sample/cities Nomes de cidades do mundo todo
@tools:sample/us_zipcodes Códigos postais dos EUA gerados aleatoriamente
@tools:sample/us_phones Números de telefone gerados aleatoriamente, com o formato: (800) 555-xxxx
@tools:sample/lorem texto de preenchimento em latim
@tools:sample/date/day_of_week Datas e horários aleatórios para o formato especificado
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars Drawables vetoriais que você pode usar como avatares de perfil
@tools:sample/backgrounds/scenic Imagens que você pode usar como planos de fundo