Referencia de atributos de herramientas

Android Studio admite una variedad de atributos XML en el espacio de nombres tools, que habilitan funciones durante el diseño (por ejemplo, qué diseño se mostrará en un fragmento) o comportamientos durante el tiempo de compilación (por ejemplo, qué modo de reducción se aplicará a los recursos de XML). Cuando compilas tu app, las herramientas de compilación quitan estos atributos para que no haya ningún efecto en el tamaño del APK o en el comportamiento del tiempo de ejecución.

Para usar estos atributos, agrega el espacio de nombres tools al elemento raíz de cada archivo XML donde quieras usarlos, como se muestra a continuación:

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

Error al controlar los atributos

Los siguientes atributos ayudan a suprimir los mensajes de advertencia de lint.

tools:ignore

Destinado a: Cualquier elemento

Usado por: Lint

Este atributo acepta una lista separada por comas de los ID de problemas de Lint que quieres que las herramientas omitan en este elemento y en todos los elementos descendientes.

Por ejemplo, puedes indicar a las herramientas que omitan el error MissingTranslation:

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

tools:targetApi

Destinado a: Cualquier elemento

Usado por: Lint

Este atributo funciona como la anotación @TargetApi del código de Java: permite especificar el nivel de API (ya sea como un número entero o como un nombre de código) compatible con este elemento.

Esto indica a las herramientas que crees que este elemento (y cualquier elemento secundario) se usarán solo en el nivel de API especificado o en uno posterior. Esto evita que Lint te advierta si ese elemento o sus atributos no están disponibles en el nivel de la API que especificas como tu minSdkVersion.

Por ejemplo, puedes usar esto porque GridLayout está disponible solo en el nivel 14 de API y en niveles posteriores, pero sabes que este diseño no se usa en versiones anteriores:

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

Sin embargo, en su lugar, debes usar GridLayout de la biblioteca de compatibilidad.

tools:locale

Destinado a: <resources>

Usado por: Lint, editor de Android Studio

Esto indica a las herramientas que el idioma o la configuración regional predeterminados son para los recursos del elemento <resources> específico (porque, de lo contrario, las herramientas suponen que el idioma es inglés) con el fin de evitar advertencias del corrector ortográfico. El valor debe ser un calificador de configuración regional válido.

Por ejemplo, puedes agregar esto a tu archivo values/strings.xml (los valores de string predeterminados) con el fin de indicar que el idioma usado para las strings predeterminadas es español, en lugar de inglés:

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

Atributos de la vista de diseño

Los siguientes atributos definen las características de diseño que solo se pueden ver en la vista previa de diseño de Android Studio.

tools: en lugar de android:

Destinado a: <View>

Usado por: editor de diseño de Android Studio

Puedes insertar datos de muestra en la vista previa de diseño usando el prefijo tools: en lugar de android: con cualquier atributo <View> del marco de trabajo de Android. Esto es útil cuando no se completa el valor del atributo hasta el tiempo de ejecución, pero quieres ver el efecto antes, en la vista previa de diseño.

Por ejemplo, si se establece el valor del atributo android:text durante el tiempo de ejecución o si quieres ver el diseño con un valor diferente del valor predeterminado, puedes agregar tools:text para especificar texto solo para la vista previa de diseño.

Figura 1: El atributo tools:text establece "Google Voice" como el valor de vista previa de diseño

Puedes agregar el atributo de espacio de nombres android: (que se usa durante el tiempo de ejecución) y el atributo tools: correspondiente (que anula el atributo de tiempo de ejecución solo en la vista previa de diseño).

También puedes usar un atributo tools: a fin de anular la configuración de un atributo solo para la vista previa de diseño. Por ejemplo, si tienes un FrameLayout con varios elementos secundarios, pero solo quieres ver un elemento secundario en la vista previa de diseño, podrás establecer uno como invisible en la vista previa de diseño, como se muestra a continuación:

    <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"  />
    

Cuando se usa el editor de diseño en la vista de diseño, la ventana Properties también permite editar atributos de la vista de diseño. Cada uno de los atributos de diseño se indica con un ícono de llave inglesa junto al nombre del atributo para distinguirlo del atributo real con el mismo nombre.

tools:context

Destinado a: cualquier raíz <View>

Usado por: Lint, editor de diseño de Android Studio

Este atributo declara a qué actividad está asociado este diseño de forma predeterminada. Esto habilita funciones en el editor o en la vista previa de diseño que requieren el conocimiento de la actividad, como por ejemplo, qué tema de diseño se debe usar en la vista previa y dónde se insertarán los controladores onClick cuando se generen desde una corrección rápida (figura 2).

Figura 2: La corrección rápida del atributo onClick solo funciona si se estableció tools:context

Puedes especificar el nombre de la clase de actividad con el mismo prefijo de punto del archivo de manifiesto (excepto el nombre del paquete completo). Por ejemplo:

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

Sugerencia: También puedes seleccionar el tema de la vista previa de diseño desde la barra de herramientas del Editor de diseño.

tools:itemCount

Destinado a: <RecyclerView>

Usado por: editor de diseño de Android Studio

Para un RecyclerView específico, este atributo especifica el número de elementos que el editor de diseño debe procesar en la ventana Preview.

Por ejemplo:

<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 diseño de Android Studio

Este atributo declara el diseño que quieres que genere la vista previa de diseño dentro del fragmento (porque la vista previa de diseño no puede ejecutar el código de actividad que en general aplica el diseño).

Por ejemplo:

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

tools:listitem / tools:listheader / tools:listfooter

Destinado a: <AdapterView> (y subclases como <ListView>)

Usado por: editor de diseño de Android Studio

Estos atributos especifican qué diseño se mostrará en la vista previa de los elementos, el encabezado y el pie de página de una lista. Todos los campos de datos del diseño se rellenan con contenido numérico, como "Elemento 1", de modo que no se repitan los elementos de la lista.

Por ejemplo:

<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: Cualquier raíz <View> en un diseño al que hace referencia un valor <include>

Usado por: editor de diseño de Android Studio

Este atributo permite apuntar a un diseño que usa este diseño como un valor "include", de modo que puedes generar una vista previa de este archivo (y editarla) mientras está incorporado en el diseño principal.

Por ejemplo:

<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" />
    

Ahora la vista previa de diseño muestra este diseño de TextView tal como aparece dentro de activity_main.

tools:menu

Destinado a: cualquier raíz <View>

Usado por: editor de diseño de Android Studio

Este atributo especifica qué menú debe mostrar la vista previa de diseño en la barra de apps. El valor puede ser uno o más ID de menú, separados por comas (sin @menu/ o el prefijo de ID y sin la extensión .xml). Por ejemplo:

<?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 diseño de Android Studio

Estos atributos establecen valores mínimos y máximos para una vista de NumberPicker.

Por ejemplo:

<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 diseño de Android Studio

Este atributo permite abrir un DrawerLayout en el panel Preview del editor de diseño. También puedes modificar la manera en la que el editor procesa el diseño con uno de los siguientes valores:

ConstanteValorDescripción
end800005Envía el objeto al final del contenedor, sin cambiar el tamaño.
left3Envía el objeto a la izquierda del contenedor, sin cambiar el tamaño.
right5Envía el objeto a la derecha del contenedor, sin cambiar el tamaño.
start800003Envía el objeto al inicio del contenedor, sin cambiar el tamaño.

Por ejemplo:

<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 de "@tools:sample/*"

Destinado a: Cualquier vista compatible con texto o imágenes de la IU.

Usado por: editor de diseño de Android Studio

Este atributo permite inyectar imágenes o datos de marcadores de posición en la vista. Por ejemplo, si quieres probar cómo se comporta tu diseño con el texto, pero aún no has finalizado el texto de la IU de la app, puedes usar el texto del marcador de posición de la siguiente manera:

<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" />
    

En la siguiente tabla, se describen los tipos de datos de marcadores de posición que puedes insertar en los diseños.

Valor del atributoDescripción de los datos del marcador de posición
@tools:sample/full_names Nombres completos que se generan de forma aleatoria a partir de la combinación de @tools:sample/first_names y @tools:sample/last_names
@tools:sample/first_names Nombres comunes
@tools:sample/last_names Apellidos comunes
@tools:sample/cities Nombres de ciudades del mundo
@tools:sample/us_zipcodes Código postal de los EE.UU. generado de forma aleatoria
@tools:sample/us_phones Números de teléfono generados de forma aleatoria con el siguiente formato: (800) 555-xxxx
@tools:sample/lorem Texto de marcador de posición derivado del latín
@tools:sample/date/day_of_week Fechas y horas aleatorias para el formato especificado
@tools:sample/date/ddmmyy
@tools:sample/date/mmddyy
@tools:sample/date/hhmm
@tools:sample/date/hhmmss
@tools:sample/avatars Elementos de diseño de vector que puedes usar como avatares del perfil
@tools:sample/backgrounds/scenic Imágenes que puedes usar como fondos

Atributos de reducción de recursos

Los siguientes atributos permiten habilitar marcas de referencia estrictas y declarar si se desean conservar o descartar ciertos recursos cuando se utiliza la reducción de recursos.

Para habilitar la reducción de recursos, establece la propiedad shrinkResources como true en el archivo build.gradle (junto con minifyEnabled para la reducción de código). Por ejemplo:

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

tools:shrinkMode

Destinado a: <resources>

Usado por: Herramientas de compilación con reducción de recursos

Este atributo permite especificar si las herramientas de compilación deben usar el "modo seguro" (conserva todos los recursos que se citan de forma explícita y a los que se podría hacer referencia de forma dinámica con una llamada a Resources.getIdentifier()) o el "modo estricto" (conserva solo los recursos que se citan de forma explícita en el código o en otros recursos).

El valor predeterminado es usar el modo seguro (shrinkMode="safe"). Para utilizar el modo estricto, agrega shrinkMode="strict" a la etiqueta <resources>, como se muestra a continuación:

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

Si habilitas el modo estricto, es posible que debas usar tools:keep para conservar los recursos que se quitaron, pero que en realidad quieres conservar, y tools:discard para quitar de forma explícita aún más recursos.

Para obtener más información, consulta Cómo reducir recursos.

tools:keep

Destinado a: <resources>

Usado por: Herramientas de compilación con reducción de recursos

Cuando se utiliza la reducción de recursos para quitar recursos no utilizados, este atributo permite especificar los recursos que se deben conservar (en general, porque se hace referencia a ellos de manera indirecta durante el tiempo de ejecución, como por ejemplo, al enviar un nombre de recurso generado de forma dinámica a Resources.getIdentifier() ).

Para usar este atributo, crea un archivo XML en el directorio de recursos (por ejemplo, en res/raw/keep.xml) con la etiqueta <resources> y especifica cada recurso que quieras conservar en el atributo tools:keep en el formato de lista delimitada por comas. Puedes usar el carácter de asterisco como comodín. Por ejemplo:

<?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 obtener más información, consulta Cómo reducir recursos.

tools:discard

Destinado a: <resources>

Usado por: Herramientas de compilación con reducción de recursos

Cuando se utiliza la reducción de recursos para quitar recursos no utilizados, este atributo permite especificar aquellos que quieres descartar de forma manual (en general, porque se hace referencia al recurso pero de una manera que no afecta la app, o porque el complemento Gradle dedujo de forma incorrecta que se hace referencia al recurso).

Para usar este atributo, crea un archivo XML en el directorio de recursos (por ejemplo, en res/raw/keep.xml) con la etiqueta <resources> y especifica cada recurso que quieras conservar en el atributo tools:discard en el formato de lista delimitada por comas. Puedes usar el carácter de asterisco como comodín. Por ejemplo:

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

Para obtener más información, consulta Cómo reducir recursos.