Este codelab es parte del curso Conceptos básicos de Kotlin para Android. Aprovecharás al máximo este curso si trabajas con los codelabs de forma secuencial. Todos los codelabs del curso se enumeran en la página de destino de los codelabs de Android Kotlin Fundamentals.
Conocimientos que ya deberías tener
- Cómo crear una app básica para Android en Kotlin
- Ejecutar una app para Android en un emulador o en un dispositivo
- Conceptos básicos de
LinearLayout
- Crear una app simple que use
LinearLayout
y unTextView
Qué aprenderás
- Cómo trabajar con
View
yViewGroup
- Cómo organizar vistas en un
Activity
conLinearLayout.
- Cómo usar
ScrollView
para mostrar el contenido desplazable - Cómo cambiar la visibilidad de un
View
- Cómo crear y usar recursos de cadenas y dimensiones
- Cómo crear un diseño lineal con el editor de diseño de Android Studio
Actividades
- Crea la app de AboutMe.
- Agrega un
TextView
al diseño para mostrar tu nombre. - Agrega un
ImageView.
- Agrega un
ScrollView
para mostrar texto desplazable.
En la app de AboutMe, puedes mostrar datos interesantes sobre ti o personalizar la app para un amigo, un familiar o una mascota. Esta app muestra un nombre, un botón LISTO, una imagen de una estrella y un poco de texto que se puede desplazar.
En esta tarea, crearás el proyecto AboutMe de Android Studio.
- Abre Android Studio si aún no lo has hecho.
- Si ya hay un proyecto abierto en Android Studio, selecciona File > New > New Project.
- Si aún no hay un proyecto abierto, selecciona + Start a new Android Studio project en el diálogo Welcome to Android Studio.
- En el diálogo Create New Project, en la pestaña Phone and Tablet, selecciona la plantilla Empty Activity. Haz clic en Siguiente.
- En el siguiente diálogo Create New Project, establece los siguientes parámetros y haz clic en Finish.
Atributo | Valor |
Nombre de la aplicación | AboutMe |
Nombre de la empresa (Android) |
|
Guardar ubicación | Deja la ubicación predeterminada o cámbiala al directorio que prefieras. |
Idioma | Kotlin |
Nivel de API mínimo | API 19: Android 4.4 (KitKat) |
Este proyecto admitirá aplicaciones instantáneas | Deja esta casilla de verificación sin marcar. |
Usar artefactos de AndroidX | Selecciona esta casilla de verificación. |
Android Studio tardará un momento en generar los archivos del proyecto.
- Ejecuta la app. Verás la cadena "Hello World" en la pantalla en blanco.
La plantilla Empty Activity crea una sola actividad vacía, Mainactivity.kt
. La plantilla también crea un archivo de diseño llamado activity_main.xml
. El archivo de diseño tiene ConstraintLayout
como su ViewGroup
raíz y un solo TextView
como contenido.
En esta tarea, cambiarás el elemento raíz ViewGroup
generado por un LinearLayout
. También puedes organizar los elementos de la IU de forma vertical.
Ver grupos
Un ViewGroup
es una vista que puede contener vistas secundarias, que son otras vistas y grupos de vistas. Las vistas que componen un diseño se organizan como una jerarquía de vistas con un grupo de vistas como raíz.
En un grupo de vistas LinearLayout
, los elementos de la IU se organizan de forma horizontal o vertical.
Cambia el diseño raíz para que use un grupo de vistas LinearLayout
:
- Selecciona el panel Project > Android. En la carpeta
app/res/layout
, abre el archivoactivity_main.xml
. - Selecciona la pestaña Text y cambia el grupo de vistas raíz de
ConstraintLayout
aLinearLayout
. - Quita el
TextView
. En el elementoLinearLayout
, agrega el atributoandroid:orientation
y establécelo envertical
.
Antes:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Después:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
El editor de diseño es una herramienta de diseño visual dentro de Android Studio. En lugar de escribir código XML manualmente para compilar el diseño de tu app, puedes usar el editor de diseño para arrastrar elementos de IU al editor de diseño.
Para ver el editor de diseño, haz clic en la pestaña Design. En la siguiente captura de pantalla, se muestran las partes del Editor de diseño.
Design editor: Muestra una representación visual del diseño de la pantalla en la vista de diseño, la vista de plano técnico o ambas. El editor de diseño es la parte principal del editor de diseño.
Barra de herramientas: Proporciona botones para configurar la apariencia de tu diseño en el editor de diseño y para cambiar algunos atributos de diseño. Por ejemplo, para cambiar la visualización de tu diseño en el editor de diseño, usa el menú desplegable Select Design Surface
:
- Usa Design para obtener una vista previa real de tu diseño.
- Usa Blueprint para ver únicamente el contorno de cada vista.
- Usa Design + Blueprint para ver ambas pantallas una al lado de la otra.
Palette: Proporciona una lista de vistas y grupos de vistas que puedes arrastrar a tu diseño o al panel Component Tree.
Attributes: Muestra los atributos de la vista o el grupo de vistas seleccionado actualmente. Para alternar entre una lista completa de atributos y los atributos que se usan con frecuencia, usa el ícono
en la parte superior del panel.
Árbol de componentes: Muestra la jerarquía del diseño como un árbol de vistas. El Component Tree es útil cuando tienes vistas pequeñas, ocultas o superpuestas que no podrías seleccionar de otra manera en el editor de diseño.
Paso 1: Agrega un TextView
- Abre el archivo
res/layout/activity_main.xml
, si aún no está abierto. - Cambia a la pestaña Text
y revisa el código. El código tiene un
LinearLayout
como grupo de vistas raíz. (Las vistas de grupo son vistas que contienen otras vistas).
ElLinearLayout
tiene los atributos obligatorioslayout_height
,layout_width
yorientation
, que esvertical
de forma predeterminada. - Cambia a la pestaña Design para abrir el editor de diseño.
- Arrastra una vista de texto desde el panel Palette hasta el editor de diseño.
- Observa el panel Component Tree. La nueva vista de texto se coloca como un elemento secundario del grupo de vistas principal, que es el
LinearLayout
. - Abre el panel Attributes si aún no está abierto. (Para abrir el panel, haz doble clic en el elemento
TextView
recién agregado en el editor de diseño). - Establece los siguientes atributos en el panel Attributes:
Atributo | Valor |
ID |
|
texto | Establécelo con tu nombre. (Uno de los campos de texto muestra un ícono de llave inglesa para indicar que es para el espacio de nombres |
textAppearance > textSize |
|
textAppearance > textColor |
|
textAppearance > textAlignment | Centrar |
Paso 2: Crea un recurso de cadena
En Component Tree, junto a TextView,
, verás un ícono de advertencia . Para ver el texto de advertencia, haz clic en el ícono o apunta a él, como se muestra en la siguiente captura de pantalla.
Para resolver la advertencia, crea un recurso de cadena:
- En el panel Atributos, haz clic en los tres puntos junto al atributo texto que configuraste con tu nombre. Se abrirá el editor de recursos.
- En el diálogo Resources, selecciona Add new resource > New string Value.
- En el diálogo New String Value Resource, establece el campo Resource name en
name
. Establece el campo Valor del recurso en tu propio nombre. Haz clic en Aceptar. Observa que la advertencia ya no aparece. - Abre el archivo
res/values/strings.xml
y busca el recurso de cadena recién creado llamadoname
.
<string name="name">Aleks Haecky</string>
Paso 3: Crea un recurso de dimensión
Acabas de agregar un recurso con el editor de recursos. También puedes extraer recursos en el editor de código XML para crear recursos nuevos:
- En el archivo
activity_main.xml
, cambia a la pestaña Texto. - En la línea
textSize
, haz clic en el número (20sp
) y escribeAlt+Enter
(Option+Enter
en Mac). Selecciona Extract dimension resource en el menú emergente. - En el diálogo Extract Resource, ingresa
text_size
en el campo Resource name. Haz clic en Aceptar. - Abre el archivo
res/values/dimens.xml
para ver el siguiente código generado:
<dimen name="text_size">20sp</dimen>
- Abre el archivo
MainActivity.kt
y busca el siguiente código al final de la funciónonCreate()
:
setContentView(R.layout.activity_main)
La función setContentView()
conecta el archivo de diseño con el Activity
. El archivo de recursos de diseño especificado es R.layout.activity_main
:
R
es una referencia al recurso. Es una clase generada automáticamente con definiciones para todos los recursos de tu app.layout.activity_main
indica que el recurso es un diseño llamadoactivity_main
.
- Ejecuta tu app. Se mostrará un
TextView
con tu nombre.
Cuando miras la pantalla de tu app, tu nombre se muestra en la parte superior, por lo que ahora agregarás padding y un margen.
Padding frente a margen
El relleno es el espacio dentro de los límites de una vista o un elemento. Es el espacio entre los bordes de la vista y el contenido de la vista, como se muestra en la siguiente figura.
El tamaño de una vista incluye su relleno. Los siguientes son atributos de padding de uso general:
android:padding
especifica el padding para los cuatro bordes de la vista.android:paddingTop
especifica el padding para el borde superior.android:paddingBottom
especifica el padding para el borde inferior.android:paddingStart
especifica el padding para el borde "inicial" de la vista.android:paddingEnd
especifica el padding para el borde "final" de la vista.android:paddingLeft
especifica el padding para el borde izquierdo.android:paddingRight
especifica el padding para el borde derecho.
El margen es el espacio que se agrega fuera de los bordes de la vista. Es el espacio desde el borde de la vista hasta su elemento principal, como se muestra en la figura anterior. Los siguientes son atributos de margen de uso común:
android:layout_margin
especifica un margen para los cuatro lados de la vista.android:layout_marginBottom
especifica el espacio fuera del lado inferior de esta vista.android:layout_marginStart
especifica el espacio fuera del lado "inicial" de esta vista.android:layout_marginEnd
especifica el espacio en el lado final de esta vista.android:layout_marginLeft
especifica el espacio en el lado izquierdo de esta vista.android:layout_marginRight
especifica el espacio en el lado derecho de esta vista.
Paso 1: Agrega relleno
Para agregar espacio entre tu nombre y el borde superior de la vista de texto name
, agrega relleno superior.
- Abre el archivo
activity_main.xml
en la pestaña Design. - En Component Tree o en el editor de diseño, haz clic en la vista de texto para abrir su panel Attributes.
- En la parte superior del panel Atributos, haz clic en el ícono de doble flecha
para ver todos los atributos disponibles.
- Busca Padding, expándelo y haz clic en los tres puntos … junto al atributo top. Aparecerá el diálogo Resources.
- En el diálogo Resources, selecciona Add new resource > New dimen Value.
- En el diálogo New Dimension Value Resource, crea un nuevo recurso
dimen
llamadosmall_padding
con un valor de8dp
.
La abreviatura dp significa independiente de la densidad. Si quieres que un elemento de la IU tenga el mismo tamaño en pantallas con diferentes densidades, usa dp como unidad de medida. Sin embargo, cuando especifiques el tamaño del texto, usa siempre sp (píxeles escalables). - Haz clic en Aceptar.
Paso 2: Agrega un margen
Para alejar la vista de texto name
del borde del elemento principal, agrega un margen superior.
- En el panel Attributes, busca "margin" para encontrar Layout_Margin.
- Expande Layout_Margin y haz clic en los tres puntos … junto al atributo top.
- Crea un recurso
dimen
nuevo llamadolayout_margin
y hazlo16dp
. Haz clic en OK.
Paso 3: Agrega una fuente
Para que la vista de texto name
se vea mejor, usa la fuente Roboto de Android. Esta fuente forma parte de la biblioteca de compatibilidad, y la agregas como un recurso.
- En el panel Attributes, busca "fontFamily".
- En el campo fontFamily, haz clic en la flecha del menú desplegable, desplázate hasta la parte inferior de la lista y selecciona More Fonts.
- En el diálogo Resources, busca
rob
y elige Roboto. En la lista Vista previa, selecciona Normal. - Selecciona el botón de selección Add font to project.
- Haz clic en Aceptar.
La carpeta res
ahora tiene una carpeta font
que contiene un archivo de fuente roboto.ttf
. Se agrega el atributo @font/roboto
a tu TextView
.
Paso 4: Extrae el estilo
Un estilo es una colección de atributos que especifican la apariencia y el formato de una vista. Un estilo puede incluir el color y el tamaño de la fuente, el color de fondo, el padding, el margen y otros atributos comunes.
Puedes extraer el formato de la vista de texto name
en un diseño y reutilizarlo para cualquier cantidad de vistas en tu app. Reutilizar un diseño le da a tu app un aspecto coherente cuando tienes varias vistas. El uso de estilos también te permite mantener estos atributos comunes en una sola ubicación.
- Haz clic con el botón derecho en
TextView
en el árbol de componentes y selecciona Refactor > Extract Style. - En el diálogo Extract Android Style, desmarca las casillas de verificación
layout_width
,layout_height
ytextAlignment
. Estos atributos suelen ser diferentes para cada vista, por lo que no quieres que formen parte del diseño. - En el campo Nombre del diseño, ingresa
NameStyle
. - Haz clic en Aceptar.
- Un diseño también es un recurso, por lo que se guarda en la carpeta
res/values/
en un archivostyles.xml
. Abrestyles.xml
y examina el código generado para el diseñoNameStyle
, que se verá similar a este:
<style name="NameStyle">
<item name="android:layout_marginTop">@dimen/layout_margin</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:paddingTop">@dimen/small_padding</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
- Abre
activity_main.xml
y cambia a la pestaña Text. Observa que el estilo generado se usa en la vista de texto comostyle="@style/NameStyle"
. - Ejecuta la app y observa los cambios en la fuente y el padding alrededor de tu
TextView
.
La mayoría de las apps para Android del mundo real constan de una combinación de vistas para mostrar imágenes, mostrar texto y aceptar la entrada del usuario en forma de texto o eventos de clic. En esta tarea, agregarás una vista para mostrar una imagen.
Un ImageView
es una vista para mostrar recursos de imagen. Por ejemplo, un ImageView
puede mostrar recursos de Bitmap
, como archivos PNG, JPG, GIF o WebP, o bien puede mostrar un recurso de Drawable
, como un dibujo vectorial.
Android incluye recursos de imágenes, como íconos, avatares y fondos de muestra. Agregarás uno de estos recursos a tu app.
- Muestra el archivo de diseño en la pestaña Design y, luego, arrastra un ImageView desde el panel Palette hasta debajo de
name_text
en el Component Tree. Se abrirá el diálogo Resources . - Selecciona Drawable si aún no está seleccionado.
- Expande android, desplázate y selecciona btn_star_big_on. Es la estrella amarilla
.
- Haz clic en Aceptar.
La imagen de estrella se agrega al diseño debajo de tu nombre. Como tienes unLinearLayout
vertical, las vistas que agregues se alinearán verticalmente. - Cambia a la pestaña Text y observa el código
ImageView
generado. El ancho se establece enmatch_parent
, por lo que la vista será tan ancha como su elemento principal. La altura se establece enwrap_content
, por lo que la vista será tan alta como su contenido. ElImageView
hace referencia al elemento de diseñobtn_star_big_on
.
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/btn_star_big_on" />
- Para cambiar el nombre del
id
delImageView
, haz clic con el botón derecho en"@+id/imageView"
y selecciona Refactor > Rename. - En el diálogo Rename, establece
id
en@+id/star_image
. Haz clic en Refactor.
- En la pestaña Design, en Component Tree, haz clic en el ícono de advertencia
junto a
star_image
. La advertencia se debe a la falta de uncontentDescription
, que los lectores de pantalla usan para describir imágenes al usuario. - En el panel Atributos, haz clic en los tres puntos … junto al atributo
contentDescription
. Se abrirá el diálogo Resources. - En el diálogo Resources, selecciona Add new resource > New string Value. Establece el campo Nombre del recurso en
yellow_star
y el campo Valor del recurso enYellow star
. Haz clic en Aceptar. - Usa el panel Attributes para agregar un margen superior de
16dp
(que es@dimen/layout_margin
) ayellow_star
, para separar la imagen de la estrella del nombre. - Ejecuta tu app. Tu nombre y la imagen de la estrella se muestran en la IU de la app.
Un ScrollView
es un grupo de vistas que permite que se pueda desplazar la jerarquía de vistas que hay adentro. Las vistas de desplazamiento solo pueden incluir una vista adicional, o grupo de vistas, como elemento secundario. Por lo general, la vista secundaria es un LinearLayout
. Dentro de un LinearLayout
, puedes agregar otras vistas.
En la siguiente imagen, se muestra un ejemplo de un ScrollView
que contiene un LinearLayout
que, a su vez, contiene varias otras vistas.
En esta tarea, agregarás un ScrollView
que le permita al usuario desplazarse por una vista de texto que muestra una breve biografía. Si solo vas a hacer que una vista se pueda desplazar, puedes colocarla directamente en el ScrollView
, que es lo que harás en esta tarea.
Paso 1: Agrega un ScrollView que contenga un TextView
- Abre el archivo
activity_main.xml
en la pestaña Design. - Arrastra una vista de desplazamiento al diseño arrastrándola al editor de diseño o al Component Tree. Coloca la vista de desplazamiento debajo de la imagen de la estrella.
- Cambia a la pestaña Text para inspeccionar el código generado.
// Auto generated code
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
La altura y el ancho del ScrollView
coinciden con los del elemento principal. Una vez que la vista de texto name_text
y la vista de imagen star_image
usaron suficiente espacio vertical para mostrar su contenido, el sistema Android diseña el ScrollView
para llenar el resto del espacio disponible en la pantalla.
- Agrega un
id
alScrollView
y llámalobio_scroll
. Si agregas unid
alScrollView
, el sistema Android tendrá un identificador para la vista, de modo que, cuando el usuario rote el dispositivo, el sistema conservará la posición de desplazamiento. - Dentro de
ScrollView
, quita el código deLinearLayout
, ya que tu app solo tendrá una vista desplazable: unTextView
. - Arrastra un
TextView
de Palette a Component Tree. Coloca elTextView
debajo delbio_scroll
, como un elemento secundario debio_scroll
. - Establece el id de la nueva vista de texto en
bio_text
. - A continuación, agregarás un diseño para la nueva vista de texto. En el panel Atributos, haz clic en los tres puntos … junto al atributo style para abrir el diálogo Recursos.
- En el diálogo Resources, busca
NameStyle
. SeleccionaNameStyle
en la lista y haz clic en Aceptar. La vista de texto ahora usa el estiloNameStyle
, que creaste en una tarea anterior.
Paso 2: Agrega tu biografía al nuevo TextView
- Abre
strings.xml
, crea un recurso de cadena llamadobio
y agrega un texto largo sobre ti o sobre lo que quieras.
Aquí tienes un ejemplo de biografía:
<string name="bio">Hi, my name is Aleks.
\n\nI love fish.
\n\nThe kind that is alive and swims around in an aquarium or river, or a lake, and definitely the ocean.
\nFun fact is that I have several aquariums and also a river.
\n\nI like eating fish, too. Raw fish. Grilled fish. Smoked fish. Poached fish - not so much.
\nAnd sometimes I even go fishing.
\nAnd even less sometimes, I actually catch something.
\n\nOnce, when I was camping in Canada, and very hungry, I even caught a large salmon with my hands.
\n\nI\'ll be happy to teach you how to make your own aquarium.
\nYou should ask someone else about fishing, though.\n\n</string>
- En la vista de texto
bio_text
, establece el valor del atributotext
en el recurso de cadenabio
que contiene tu biografía. - Para que el texto de
bio_text
sea más fácil de leer, agrega espacio entre las líneas. Usa el atributolineSpacingMultiplier
y asígnale un valor de1.2
.
Observa cómo, en el editor de diseño, el textobio
se extiende hasta los bordes laterales de la pantalla. Para solucionar este problema, puedes agregar atributos de padding izquierdo, inicial, derecho y final alLinearLayout
raíz. No es necesario que agregues relleno inferior, ya que el texto que llega hasta la parte inferior le indica al usuario que se puede desplazar. - Agrega un padding de inicio y finalización de
16dp
al elementoLinearLayout
raíz. - Cambia a la pestaña Text, extrae el recurso de dimensión y asígnale el nombre
layout_padding
.
- Ejecuta tu app y desplázate por el texto.
¡Felicitaciones!
Creaste una app completa desde cero, y se ve genial.
Proyecto de Android Studio: AboutMe
Dentro de ScrollView
, agrega un ImageView
arriba de TextView
. Cuando ejecutes la app, esta imagen, a diferencia de la estrella, se desplazará fuera de la vista a medida que el texto se desplace hacia arriba.
Sugerencia: La vista de desplazamiento solo puede tener una vista secundaria. Debes envolver las dos vistas desplazables, ImageView
y TextView
, en un LinearLayout
.
- Un
ViewGroup
es una vista que puede contener otras vistas.LinearLayout
yScrollView
son grupos de vistas. LinearLayout
es un grupo de vistas que organiza sus vistas secundarias de forma horizontal o vertical.- Usa un
ScrollView
cuando necesites mostrar contenido en la pantalla, como texto largo o una colección de imágenes. Una vista de desplazamiento solo puede contener una vista secundaria. Si quieres desplazarte por más de una vista, agrega unViewGroup
, como unLinearLayout
, alScrollView
y coloca las vistas por las que se desplazará dentro de eseViewGroup
. - El editor de diseño es un editor de diseño visual dentro de Android Studio. Puedes usar el editor de diseño para compilar el diseño de tu app arrastrando elementos de la IU al diseño.
- Un estilo es una colección de atributos que especifican la apariencia de una vista. Por ejemplo, un estilo puede especificar el color y el tamaño de la fuente, el color de fondo, el padding y el margen.
- Puedes extraer y recopilar todo el formato de una vista en un estilo. Para que tu app tenga un aspecto coherente, reutiliza el estilo para otras vistas.
Curso de Udacity:
Documentación para desarrolladores de Android:
En esta sección, se enumeran las posibles actividades para el hogar para los alumnos que trabajan en este codelab como parte de un curso dirigido por un instructor. Depende del instructor hacer lo siguiente:
- Si es necesario, asigna una tarea.
- Comunicarles a los alumnos cómo enviar las actividades para el hogar.
- Califica las actividades para el hogar.
Los instructores pueden usar estas sugerencias en la medida que quieran y deben asignar cualquier otra actividad para el hogar que consideren apropiada.
Si estás trabajando en este codelab por tu cuenta, usa estas actividades para el hogar para probar tus conocimientos.
Responde estas preguntas:
Pregunta 1
¿Cuál de las siguientes opciones es un grupo de vistas?
▢ EditText
▢ LinearLayout
▢ TextView
▢ Button
Pregunta 2
¿Cuál de las siguientes jerarquías de vistas enumeradas no es válida?
▢ LinearLayout
> TextView
, TextView
, ImageView
▢ ScrollView
> LinearLayout
> TextView
, Button
, Button
, ScrollView
> TextView
▢ TextView
> TextView
, ImageView
, ScrollView
Pregunta 3
Los estilos son recursos que se definen en styles.xml
. Con ellos, puedes definir los colores, las fuentes, el tamaño del texto y muchas otras características de una vista. ¿Verdadero o falso?
▢ Verdadero
▢ Falso
Pregunta 4
Un ScrollView
es un grupo de vistas que puede contener cualquier cantidad de vistas o grupos de vistas como elementos secundarios. ¿Verdadero o falso?
▢ Verdadero
▢ Falso
Pregunta 5
¿Qué elemento de la IU se puede usar para mostrar imágenes en tu app?
▢ TextView
▢ ImageView
▢ Button
▢ ScrollView
Comienza la siguiente lección:
Para obtener vínculos a otros codelabs de este curso, consulta la página de destino de los codelabs de Conceptos básicos de Kotlin para Android.