A9 · Ejercicios de vistas XML¶
Estos ejercicios usan XML y ViewBinding, no Compose. Crea un proyecto nuevo con la plantilla Empty Views Activity.
Ejercicio A9.1¶
Hola en XML. Un LinearLayout vertical con un TextView y un Button. Al pulsar, el texto cambia (usa ViewBinding).
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
// ... (resto de la solución bloqueado)Ejercicio A9.2¶
Perfil con ConstraintLayout. Una foto circular a la izquierda, nombre y curso a su derecha y un botón «Seguir» debajo que ocupe todo el ancho. Sin anidar layouts.
Ejercicio A9.3¶
Formulario. EditText de nombre, CheckBox, RadioGroup con dos opciones y un botón que muestre un resumen en un TextView.
Ejercicio A9.4¶
Mensajes. Haz que el botón del ejercicio anterior muestre primero un Toast y después un Snackbar con acción «Deshacer».
Ejercicio A9.5¶
Lista con RecyclerView. Una lista de 20 contactos con Adapter, ViewHolder y un layout de fila con dos textos.
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
data class Contacto(val nombre: String, val telefono: String)
class ContactoAdapter(private val datos: List<Contacto>) :
RecyclerView.Adapter<ContactoAdapter.Fila>() {
class Fila(val binding: ItemContactoBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(padre: ViewGroup, tipo: Int): Fila =
// ... (resto de la solución bloqueado)Ejercicio A9.6¶
Menú. Añade a tu app un menú de opciones con «Ajustes» (dentro del menú) y «Buscar» (como icono). Muestra un Toast con la opción elegida.
Ejercicio A9.7¶
⭐ Reto: dos pantallas. Una Activity con una lista y otra de detalle. Al pulsar una fila, abre el detalle con un Intent pasando el nombre y el teléfono.
Ejercicio A9.8¶
⭐ Reto: Compose dentro de XML. Añade un ComposeView a uno de tus layouts XML y muestra en él un contador hecho con Compose. Explica en qué casos te interesaría mezclar ambos enfoques.