Referência de atributos de ferramentas

O Android Studio é compatível com vários atributos XML no namespace tools, que habilitam recursos de tempo de design (como qual layout exibir 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 compilação removem esses atributos para que não haja efeito no tamanho do APK ou no comportamento de tempo de execução.

Para usar esses atributos, adicione o namespace tools ao elemento raiz de cada arquivo XML em que você quer usá-los, conforme mostrado a seguir:

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

Atributos de processamento de erros

Os atributos a seguir ajudam a suprimir mensagens de aviso de lint.

tools:ignore

Destinado a: qualquer elemento

Usado por: lint

Esse atributo aceita uma lista separada por vírgulas de IDs de problemas de lint a serem ignorados pelas ferramentas nesse elemento ou em qualquer um dos descendentes dele.

Por exemplo, você pode dizer às ferramentas para ignorar o erro MissingTranslation:

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

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 é compatível com esse elemento.

Isso informa às ferramentas que você acredita que esse elemento (e qualquer filho) 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, é possível que você use essa opção porque GridLayout está disponível somente na API de nível 14 e mais recentes, sabendo que esse layout não é usado 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, você pode usar GridLayout da Biblioteca de Suporte.

tools:locale

Destinado a: <resources>

Usado por: lint, editor do Android Studio

Para evitar avisos do corretor ortográfico, isso informa às ferramentas qual é o idioma/a localidade padrão dos recursos no elemento <resources> específico, já que, caso contrário, as ferramentas presumiriam que o idioma é inglês. O valor precisa ser um qualificador de localidade válido.

Por exemplo, você pode adicionar isso ao arquivo values/strings.xml (valores de string padrão) para indicar que o idioma usado para as strings padrão é espanhol em vez de inglês:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

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: editor de layout 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, mas você gostaria de ver o efeito antecipadamente, 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, é possível adicionar tools:text para especificar textos somente para a 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 tempo de execução) e o atributo tools: correspondente (que modifica o atributo de tempo de execução apenas na visualização do layout).

Você também pode usar um tools: para desmarcar um atributo somente para a visualização do layout. Por exemplo, caso você tenha um FrameLayout com vários filhos, mas queira ver somente um na visualização do layout, é possível configurar os outros filhos para que fiquem invisíveis, 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 também permite editar alguns atributos de visualização de tempo de design. Cada atributo de tempo de design é indicado com um ícone de chave inglesa ao lado do nome do atributo para distingui-lo do atributo real com o mesmo nome.

tools:context

Destinado a: qualquer raiz <View>

Usado por: lint, editor de layout 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 confirmação da atividade, como qual será o tema de layout na visualização e onde inserir os gerenciadores onClick ao fazer uma correção rápida (Figura 2).

Figura 2. A correção rápida para o atributo onClick só funciona se você definir 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" >

Dica: você também pode selecionar o tema para a visualização do layout na barra de ferramentas do Layout Editor.

tools:itemCount

Destinado a: <RecyclerView>

Usado por: editor de layout do Android Studio

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

Exemplo:

<android.support.v7.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: editor de layout do Android Studio

Esse atributo declara qual layout você quer que a visualização do layout desenhe dentro do fragmento, já que a visualização do layout 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: editor de layout do Android Studio

Esses atributos especificam qual layout será exibido 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 raiz <View> em um layout referido por <include>

Usado por: editor de layout do Android Studio

Esse atributo permite apontar para um layout que usa esse layout como uma inclusão, para que você possa visualizar (e editar) esse arquivo da forma como ele aparece incorporado ao 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 raiz <View>

Usado por: editor de layout do Android Studio

Esse atributo especifica qual menu a visualização do layout precisa mostrar 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: editor de layout 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: editor de layout do Android Studio

Esse atributo permite abrir um DrawerLayout no painel Preview do editor de layout. Você também pode modificar a maneira como o editor renderiza o layout transmitindo um dos seguintes valores:

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

Exemplo:

<android.support.v4.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 seja compatível com texto ou imagens da IU.

Usado por: editor de layout do Android Studio

Esse atributo permite injetar dados ou imagens de marcador na visualização. Por exemplo, caso você queira testar como o layout se comporta com o texto, mas ainda não tenha concluído o texto da IU para seu app, use o texto de marcador da seguinte forma:

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

Valor do atributoDescrição dos dados do marcador
@tools:sample/full_names Nomes completos que são gerados aleatoriamente da 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 de todo o mundo.
@tools:sample/us_zipcodes Caixas postais dos EUA geradas aleatoriamente.
@tools:sample/us_phones Números de telefone gerados aleatoriamente, com o seguinte formato: (800) 555-xxxx.
@tools:sample/lorem Texto de marcador derivado do 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 de vetor que você pode usar como avatares de perfil.
@tools:sample/backgrounds/scenic Imagens que você pode usar como planos de fundo.

Atributos de redução de recursos

Os atributos a seguir permitem que você ative verificações de referência estritas e declare se quer manter ou descartar determinados recursos ao usar a redução de recursos.

Para ativar a redução de recursos, defina a propriedade shrinkResources como true no arquivo build.gradle (junto a minifyEnabled para a redução de código). Exemplo:

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

tools:shrinkMode

Destinado a: <resources>

Usado por: ferramentas de compilação com redução de recursos

Esse atributo permite que você especifique se as ferramentas de compilação usarão o "modo de segurança", procedendo com cautela e mantendo todos os recursos explicitamente citados e que possam ser referenciados de forma dinâmica com uma chamada para Resources.getIdentifier(). Ou, ainda, se usarão o "modo restrito", mantendo somente os recursos explicitamente citados no código ou em outros recursos.

Por padrão, o modo de segurança é usado (shrinkMode="safe"). Para usar o modo restrito, adicione shrinkMode="strict" à tag <resources>, conforme mostrado a seguir:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

Quando você ativa o modo restrito, pode ser necessário usar tools:keep para manter os recursos que foram removidos, mas que você quer manter, e usar tools:discard para remover ainda mais recursos de forma explícita.

Para ver mais informações, consulte Reduzir recursos.

tools:keep

Destinado a: <resources>

Usado por: ferramentas de compilação com redução de recursos

Ao usar a redução para remover recursos não utilizados, esse atributo permite que você especifique recursos que gostaria de manter, geralmente porque eles são referenciados de forma indireta no tempo de execução, transmitindo um nome de recurso gerado dinamicamente para Resources.getIdentifier(), por exemplo.

Para usá-la, crie um arquivo XML no diretório de recursos (por exemplo, em res/raw/keep.xml) com uma tag <resources> e especifique cada recurso que deve ser mantido no atributo tools:keep como uma lista separada por vírgulas. Você pode usar o caractere asterisco como curinga. Exemplo:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

Para ver mais informações, consulte Reduzir recursos.

tools:discard

Destinado a: <resources>

Usado por: ferramentas de compilação com redução de recursos

Ao usar a redução de recursos para remover recursos não utilizados, esse atributo permite que você especifique aqueles que quer descartar manualmente, geralmente porque o recurso é referenciado, mas de uma maneira que não afeta seu app, ou porque o plug-in do Gradle deduziu incorretamente que o recurso é referenciado.

Para usá-la, crie um arquivo XML no diretório de recursos (por exemplo, em res/raw/keep.xml) com uma tag <resources> e especifique cada recurso que deve ser mantido no atributo tools:discard como uma lista separada por vírgulas. Você pode usar o caractere asterisco como curinga. Exemplo:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

Para ver mais informações, consulte Reduzir recursos.