Controles básicos de Android¶
En el apartado anterior hemos visto algunos de los elementos presentes en las interfaces de usuario, pero es importante detenernos en los controles básicos que ofrece Android. Estos componentes nos permiten diseñar aplicaciones simples de manera rápida y funcional, y constituyen la base de la mayoría de interfaces gráficas.
Dentro de este grupo se encuentran los controles TextView, EditText, CheckBox, RadioButton, Button, ToggleButton, ImageButton e ImageView. A continuación se describen brevemente sus características principales y los parámetros más importantes para cada uno.
TextView¶
El control TextView es uno de los más utilizados y también uno de los más sencillos. Su función principal es mostrar texto en pantalla, sin que el usuario pueda modificarlo.
Algunos de sus atributos más comunes son:
android:textpermite establecer el texto que se mostrará.android:backgrounddefine el color de fondo del texto.android:textColorcambia el color del texto (en formato hexadecimal).android:textSizedefine el tamaño del texto. Se recomienda usar la unidad sp.android:textStylepermite establecer el estilo (negritaboldo cursivaitalic).
En el código, se puede cambiar el texto mediante el método setText().
EditText¶
El control EditText es una caja de texto editable, utilizada para introducir datos por teclado. Se puede recuperar el texto introducido mediante el método getText() y establecer contenido con setText().
Entre sus atributos más útiles destacan:
android:textpermite definir un texto inicial.android:hintmuestra un texto semitransparente (una “pista”) dentro de la caja, el cual desaparece al hacer clic sobre ella.
Este componente resulta esencial para capturar datos del usuario, como nombres, correos o contraseñas.
CheckBox¶
El componente CheckBox representa una casilla de verificación, con dos estados posibles: marcado (true) o desmarcado (false).
Se usa principalmente para indicar la selección o deselección de una opción. En el código, el estado puede comprobarse mediante el método isChecked(), y puede modificarse con setChecked(boolean).
El evento más importante asociado a este control es onCheckedChanged(CompoundButton checkView, boolean isChecked), que permite capturar el momento en que el usuario cambia el estado de la casilla.
El parámetro checkView hace referencia al propio CheckBox que generó el evento.
RadioButton¶
El control RadioButton tiene un comportamiento similar al del CheckBox, pero con una diferencia clave:
los RadioButtons suelen agruparse dentro de un RadioGroup, lo que garantiza que solo uno puede estar seleccionado al mismo tiempo. Cuando el usuario selecciona un RadioButton, el resto del grupo se desmarcan automáticamente.
Su atributo más habitual es android:text, con el que se asigna una etiqueta visible.
El evento principal es onCheckedChanged(RadioGroup group, int checkedId), que se dispara cuando cambia la selección dentro del grupo. En el código también pueden utilizarse métodos como clearCheck(), para dejar el grupo sin ninguna opción seleccionada.
Button¶
El Button es el control más simple y directo: un botón estándar que el usuario puede pulsar para ejecutar una acción. El evento más importante asociado es onClick(View v), que se ejecuta cuando se hace clic sobre él.
Este control es la base para la interacción del usuario con la aplicación.
ToggleButton¶
El ToggleButton es una variante del botón clásico que mantiene dos estados persistentes: encendido y apagado. Funciona como un interruptor, y también utiliza el evento onClick(View v) para capturar la acción del usuario.
Para conocer el estado actual, puede usarse el método isChecked(), de forma similar a los CheckBox. Este tipo de control resulta útil para activar o desactivar funciones dentro de una app.
ImageButton¶
El ImageButton combina la funcionalidad del botón con una representación visual más atractiva.
En lugar de texto, muestra una imagen que el usuario puede pulsar. El atributo android:src permite definir la imagen que se mostrará, generalmente almacenada dentro de la carpeta /res/drawable/.
En esencia, un ImageButton actúa como un botón convencional, pero ofrece una presentación más visual, ideal para iconos o acciones rápidas.
ImageView¶
Por último, el control ImageView permite mostrar imágenes en la interfaz sin que el usuario pueda interactuar directamente con ellas. No tiene funcionalidad propia, aunque puede combinarse con eventos de otros controles o utilizarse como elemento decorativo o informativo.
El atributo principal es android:src, que define la imagen a mostrar. Si se desea cambiar la imagen de forma dinámica desde el código, se puede usar el método setImageResource() o setImageBitmap().
Actividades¶
- PR 208 (RA2 / CE2a CE2b / IC1 / 5p) Crea y prueba tu primera función
@Composableque muestre un mensaje en pantalla utilizando el componenteText. Experimenta con diferentes tamaños, colores y estilos de texto para observar cómo Compose renderiza la interfaz en tiempo real. - PR 209 (RA2 / CE2b / IC2 / 5p) Diseña una pequeña interfaz con dos textos jerarquizados utilizando un
Column. Aplica márgenes, colores y tamaños diferentes para comprender cómo Compose organiza y alinea los elementos en la pantalla. - PR 210 (RA2 / CE2b / IC2 / 5p) Crea una función
@Composablecon un botón que, al pulsarse, muestre un mensaje en consola. Este ejercicio busca reforzar la relación entre la interfaz declarativa y la lógica de interacción del usuario a través del eventoonClick. - PR 211 (RA2 / CE2c / IC3 / 5p) Implementa un contador de pulsaciones utilizando un estado mutable con remember. Cada vez que el usuario presione el botón, el valor deberá incrementarse y mostrarse en pantalla, evidenciando la recomposición automática de Compose.
- PR 212 (RA2 / CE2c CE2d / IC3 / 5p) Diseña una interfaz que permita al usuario escribir su nombre en un
TextFieldy muestre en tiempo real un saludo personalizado. Observa cómo el estado del texto se actualiza dinámicamente conforme cambia la entrada del usuario. - AR 213 (RA2 / CE2a CE2b / IC2 / 3p) Crea una interfaz sencilla que combine varios textos (Text) y un botón (
Button) en una misma columna. El objetivo es reforzar la comprensión del modelo declarativo de Compose y afianzar el uso de modificadores básicos como padding, color y fontSize. - AP 214 (RA2 / CE2c CE2d / IC3 / 3p) Diseña una miniapp con un campo de texto (
TextField) y dos botones que permitan al usuario escribir un mensaje y, opcionalmente, borrarlo o reiniciar el contenido. Implementa el manejo de estado con remember y mutableStateOf para comprender cómo se actualiza la interfaz al modificar el estado interno.