Saltar a contenido

A3 · Ejercicios de layouts y Modifier

Haz una @Preview de cada ejercicio. Cuando el enunciado diga «sin números mágicos», no repitas el mismo valor: guárdalo en una constante.

Ejercicio A3.1

Tres filas. Con una Column coloca tres textos centrados horizontalmente en la pantalla.

Ejercicio A3.2

Una barra. Con una Row, un icono a la izquierda, un título que ocupe el espacio central (weight) y otro icono a la derecha.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

@Composable
fun BarraSuperior() {
    Row(
        modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.primary).padding(12.dp),
        verticalAlignment = Alignment.CenterVertically
// ... (resto de la solución bloqueado)

Ejercicio A3.3

Esquinas. En un Box de 300 dp, coloca un texto en cada una de las cuatro esquinas y uno en el centro.

Ejercicio A3.4

El orden importa. Escribe dos cajas con padding y background en distinto orden. Haz una captura de ambas y explica la diferencia.

Ejercicio A3.5

Tarjeta de producto. Con Card: nombre en negrita, precio, una descripción de dos líneas y un botón «Comprar» a la derecha.

Ejercicio A3.6

Bandera. Dibuja con Row/Column y background la bandera de un país de tres bandas (por ejemplo, Francia o Italia).

Ejercicio A3.7

Pantalla con Scaffold. Una TopAppBar con el título de tu app, un FloatingActionButton y un contenido con tres tarjetas. Comprueba que nada queda tapado.

Ejercicio A3.8

⭐ Reto: calculadora (solo diseño). Dibuja el teclado de una calculadora con Column y Row: una pantalla arriba y 4 filas de botones del mismo tamaño (usa weight).

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

@Composable
fun Calculadora() {
    val filas = listOf(
        listOf("7", "8", "9", "÷"),
        listOf("4", "5", "6", "×"),
// ... (resto de la solución bloqueado)

Ejercicio A3.9

⭐ Reto: móvil o tableta. Con BoxWithConstraints, muestra dos paneles uno debajo del otro si la pantalla mide menos de 600 dp y lado a lado si mide más. Pruébalo con dos @Preview de distinto ancho.