Conceptos y la implementación de Jetpack Compose
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 esos 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 esos atributos, agrega el espacio de nombres tools al elemento raíz de cada archivo en formato 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" >
Atributos de manejo de errores
El siguiente atributo ayuda a suprimir los mensajes de advertencia de lint:
tools:targetApi
Destinado a: Cualquier elemento
Usado por: Lint
Este atributo funciona como la @TargetApi anotación en código 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 cualquiera de sus elementos secundarios se usan 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 API que especificas como tu minSdkVersion.
Por ejemplo, puedes usar este atributo porque GridLayout solo está
disponible en el nivel de API 14 y en niveles posteriores, pero sabes que este diseño no se usa en
tu código para versiones anteriores:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(Sin embargo, ten en cuenta que recomendamos que, en su lugar, uses GridLayout
de la biblioteca de compatibilidad).
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 muestras de datos en la vista previa de diseño usando el prefijo tools: en lugar de android: con cualquier atributo <View> del framework de Android.
Esto es útil cuando no se propaga el valor del atributo hasta el tiempo de ejecución y 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 al predeterminado, puedes agregar tools:text para especificar texto para la vista previa de diseño solamente.
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: para deshacer una configuración de atributos para la vista previa de diseño solamente. Por ejemplo, si tienes un objeto FrameLayout con dos elementos secundarios, pero solo quieres ver uno en la vista previa de diseño, puedes 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 permite editar algunos atributos de vista de diseño. Cada uno de estos atributos de diseño se indica con un ícono de herramienta
junto a su nombre 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 conocimiento de la actividad, como qué tema de diseño se encuentra en la vista previa y dónde se insertarán los controladores onClick generados a partir de una corrección rápida, como se muestra en la figura 2.
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" >
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 renderizar en la Preview ventana.
Por ejemplo:
<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: 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 normalmente aplica el diseño.
Por ejemplo:
<fragment android:name="com.example.main.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 con <include>, por lo que puedes obtener una vista previa de este archivo y editarlo mientras está incorporado en el diseño de nivel superior.
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ú muestra la vista previa de diseño en la barra de la app. El valor es uno o más IDs 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 NumberPicker vista.
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 te permite abrir un DrawerLayout en la vista previa.
También puedes modificar la manera en la que el editor de diseño renderiza el diseño pasando uno de los siguientes valores:
Tabla 1. Valores para modificar la forma en que el editor de diseño renderiza un DrawerLayout
| Constante | Valor | Descripción |
|---|---|---|
end | 800005 | Envía el objeto al final del contenedor, sin cambiar el tamaño. |
left | 3 | Envía el objeto a la izquierda del contenedor, sin cambiar el tamaño. |
right | 5 | Envía el objeto a la derecha del contenedor, sin cambiar el tamaño. |
start | 800003 | Envía el objeto al inicio del contenedor, sin cambiar el tamaño. |
Por ejemplo:
<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 de "@tools:sample/*"
Destinado a: Cualquier vista compatible con imágenes o texto de IU
Usado por: Editor de diseño de Android Studio
Este atributo permite insertar imágenes o datos de marcadores de posición en la vista. Por ejemplo, para probar cómo se comporta tu diseño con el texto antes de finalizar 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:
Tabla 2. Datos de marcadores de posición para diseños
| Valor del atributo | Descripció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 de todo el 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 en 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 vectorial que puedes usar como avatares del perfil |
@tools:sample/backgrounds/scenic |
Imágenes que puedes usar como fondos |