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:
Constante | Valor | Descrição |
---|---|---|
end | 800005 | Envie o objeto para o final do contêiner, sem alterar o tamanho dele. |
left | 3 | Envie o objeto para a esquerda do contêiner, sem alterar o tamanho dele. |
right | 5 | Envie o objeto para a direita do contêiner, sem alterar o tamanho dele. |
start | 800003 | Envie 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 atributo | Descriçã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.