Font size
WorksheetsAndroid Segundo Boque
Total questions: 129
Worksheet time: 1hrs 5mins
En un EditText, ¿qué propiedad es la más adecuada para mostrar un texto de ayuda que desaparezca cuando el usuario empieza a escribir?
android:text
android:label
android:hint
android:placeholder
¿Qué unidad se recomienda usar para el tamaño de letra en un EditText para respetar la accesibilidad y los ajustes de fuente del sistema?
dp
px
sp
pt
¿Cuál es el efecto de usar android:layout_width="match_parent" en un EditText dentro de un LinearLayout horizontal?
El EditText ocupará solo el espacio mínimo necesario para su contenido.
El EditText intentará ocupar todo el ancho disponible en el contenedor.
El EditText será invisible hasta que tenga foco.
El EditText se ajustará a la altura del padre pero no al ancho.
¿Qué ocurre si se establece simultáneamente android:text y android:hint en un EditText?
El hint se muestra encima del texto inicial.
Solo se muestra el hint y el texto se ignora.
Solo se muestra el texto; el hint no llega a verse.
Android lanza una excepción en tiempo de ejecución.
Dado este XML de un EditText con minLines="2", maxLines="4" y lines="3": ¿Cuál de las siguientes afirmaciones describe mejor el comportamiento de las líneas visibles?
Siempre mostrará exactamente 3 líneas visibles.
Nunca podrá mostrar más de 2 líneas.
Puede crecer hasta 4 líneas visibles, pero arranca visualmente con 3.
lines anula completamente minLines y maxLines.
¿Qué propiedad debes cambiar para que el texto del EditText aparezca en negrita?
android:textWeight="bold"
android:textStyle="bold"
android:fontBold="true"
android:style="@style/TextBold" es obligatoria
¿Qué hace realmente la propiedad android:inputType de un EditText?
Impide que el usuario escriba caracteres no válidos.
Selecciona el tipo de teclado/IME y da pistas de formato al sistema.
Solo cambia el color del texto según el tipo de entrada.
Solo sirve para establecer la longitud máxima del texto.
Si quieres que un EditText acepte solo números enteros y muestre un teclado numérico, ¿qué valor es apropiado para android:inputType?
textPassword
number
phone
numberSigned|numberDecimal
¿Cuál es el efecto de android:textColorHint en un EditText?
Cambia el color del texto cuando el campo tiene foco.
Cambia el color del texto del placeholder (hint) cuando el campo está vacío.
Cambia el color del borde del EditText.
Cambia el color del texto cuando hay un error de validación.
Para mejorar la legibilidad del texto dentro de un EditText, ¿qué propiedad añadirías principalmente?
android:margin="12dp"
android:padding="12dp"
android:lineSpacingExtra="12dp"
android:scaleX="1.2"
En cuanto a dimensiones, ¿qué recomendación es correcta para diseñar EditText?
Usar siempre px para tamaños de texto y paddings.
Usar sp para paddings y dp para texto.
Usar dp para paddings/márgenes y sp para el tamaño de texto.
Usar solo dp para todo.
Tienes este código en Kotlin: val etNombre = findViewById
El campo vacío, sin texto.
El texto "Introduce tu nombre" en modo hint (grisáceo).
Nada, porque setText("") elimina el hint.
Un error en tiempo de ejecución por mezclar hint y texto.
¿Qué componente de Android se encarga de mostrar el teclado virtual cuando un EditText recibe foco?
InputManagerService
InputMethodEditor (IME) / teclado del sistema
KeyboardController
TextInputLayout
¿Cuál es una razón típica para añadir un TextWatcher a un EditText?
Cambiar el color de fondo una sola vez al crearse la actividad.
Detectar en tiempo real los cambios de texto para validar mientras el usuario escribe.
Evitar que el usuario pueda borrar el contenido.
Capturar exclusivamente el momento en que el campo pierde el foco.
Dado este código: setOnFocusChangeListener { _, hasFocus -> if (!hasFocus && etEmail.text.isNullOrBlank()) { etEmail.error = "El email es obligatorio" } }. ¿Qué comportamiento implementa?
Valida el email carácter a carácter.
Solo valida cuando el usuario pulsa un botón.
Valida al perder el foco; si está vacío, muestra un error en el EditText.
Nunca se ejecuta porque hasFocus siempre es true.
Si necesitas que un EditText crezca verticalmente a medida que el usuario añade más texto, pero manteniendo un mínimo de 2 líneas, ¿qué valor es más apropiado?
android:lines="2"
android:minLines="2"
android:maxLines="2"
android:singleLine="true"
¿Qué problema de usabilidad puedes generar si defines un EditText largo con android:layout_width="wrap_content" y sin restricciones adicionales dentro de un ConstraintLayout?
El campo será siempre de ancho completo.
El campo puede quedar demasiado estrecho o deformarse según el contenido.
El campo no será clicable.
El campo no mostrará el teclado.
¿Cuál de las siguientes NO es una buena práctica en el diseño de EditText en formularios?
Dejar el android:text vacío y usar hint.
Usar sp para el texto.
Revisar la accesibilidad y contrastes de colores.
Usar texto explicativo muy largo dentro del EditText vía android:text.
Tienes este código: etPassword.inputType = InputType.TYPE_CLASS_TEXT. ¿Qué inconveniente tiene en un campo de contraseña?
No permite escribir letras.
El texto se mostrará en claro, sin ocultarse.
El teclado no se mostrará.
El campo dejará de aceptar números.
¿Cuál es la combinación más adecuada para un campo de contraseña típico?
TYPE_CLASS_TEXT o TYPE_TEXT_VARIATION_PASSWORD
TYPE_CLASS_NUMBER
TYPE_CLASS_TEXT o TYPE_TEXT_FLAG_CAP_WORDS
TYPE_CLASS_TEXT o TYPE_TEXT_VARIATION_EMAIL_ADDRESS
En un formulario con varios EditText, ¿qué ventaja tiene configurar bien la opción "Siguiente" del teclado (imeOptions)?
Cambia el tema de la app.
Permite que el usuario navegue fluidamente de un campo a otro sin tocar la pantalla.
Obliga al usuario a cerrar siempre el teclado.
Desactiva el foco automático.
¿Cuál es el riesgo de fijar un EditText con demasiadas líneas iniciales (android:lines="10") en una pantalla ya muy cargada de componentes?
Consume más memoria de la app.
Puede empujar otros componentes fuera de la pantalla, obligando a hacer scroll excesivo.
Hace que el teclado no aparezca.
Desactiva el autocompletado.
Dado este XML en ConstraintLayout:
Para que el campo sea invisible.
Es obligatorio para todos los EditText.
Para que el ancho se determine por las restricciones (match constraints).
Para que coincida con el alto del padre.
En términos de experiencia de usuario, ¿cuál es el uso más adecuado de un EditText simple?
Seleccionar elementos de una lista corta.
Introducir texto libre, como comentarios, nombres o búsquedas.
Reemplazar a un Spinner.
Mostrar valores de solo lectura.
¿Qué método de EditText usarías en Kotlin para limpiar completamente el texto introducido?
et.text.clear()
et.reset()
et.invalidate()
et.removeAll()
¿Qué ventaja tiene establecer el hint desde recursos (@string/...) en lugar de escribirlo literal en el XML?
Evita que el EditText tenga foco.
Permite reutilización, traducción y mantenimiento más sencillo.
Mejora el rendimiento del layout.
Hace que el texto sea siempre en mayúsculas.
¿Cuál es la diferencia principal entre android:lines y android:maxLines en un EditText multilínea?
lines controla el tamaño inicial y maxLines el límite superior de crecimiento.
lines controla el límite superior y maxLines el inicial.
Son equivalentes.
Solo maxLines afecta al comportamiento.
¿Qué patrón es más correcto para validar un campo obligatorio cuando el usuario pulsa un botón "Guardar"?
Validar dentro del onCreate.
Validar en un TextWatcher y nunca al pulsar el botón.
Al hacer clic en "Guardar", leer todos los EditText y mostrar errores si están vacíos.
No validar si el usuario ya ha visto el formulario una vez.
¿Qué llamada sería más adecuada para poner el foco inicial en un EditText al abrir la pantalla?
et.requestFocus() y opcionalmente mostrar el teclado.
et.performClick()
et.setSelected(true)
No se puede controlar desde código.
¿Por qué puede ser mala idea usar un EditText como sustituto de un control de selección (por ejemplo escribir manualmente el nombre de una provincia)?
Porque EditText no soporta teclado.
Porque dificulta la validación, permite errores tipográficos y no guía al usuario en las opciones.
Porque consume demasiada memoria.
Porque siempre requiere conexión a Internet.
¿Cuál es la función principal de un ArrayAdapter en Android?
Validar formularios.
Actuar como puente entre una lista de datos y un componente visual como el Spinner.
Cargar imágenes desde Internet.
Crear hilos de fondo.
¿En qué caso es más apropiado usar un Spinner frente a un AutoCompleteTextView?
Cuando la lista es enorme (miles de elementos).
Cuando quieres que el usuario escriba y busque entre una lista muy grande.
Cuando la lista es corta/mediana y no necesitas que el usuario teclee.
Cuando quieres introducir texto libre.
En un Spinner se recomienda declarar los datos en res/values/arrays.xml. ¿Cuál es la principal ventaja?
Permite que el Spinner cargue más rápido.
Facilita la reutilización, traducción y mantenimiento de la lista de opciones.
Es obligatorio para que el Spinner funcione.
Evita tener que usar un Adapter.
Dado este XML de un Spinner:
Carga datos desde Internet.
Carga las opciones desde un string-array de recursos.
Crea automáticamente un ArrayAdapter interno con ese recurso.
b) y c) son correctas.
¿Cuál es un caso de uso típico de AutoCompleteTextView?
Seleccionar entre 3 opciones fijas.
Elegir rápido entre listas medianas/grandes como ciudades o productos, escribiendo y filtrando.
Sustituir siempre a EditText.
Mostrar solo texto de solo lectura.
¿Qué hace la propiedad completionThreshold en un AutoCompleteTextView?
Define cuántos caracteres máximos puede escribir el usuario.
Define a partir de cuántos caracteres escritos se empiezan a mostrar sugerencias.
Define el número de sugerencias visibles a la vez.
Define el tamaño de la lista interna.
¿Cuál es el valor por defecto de completionThreshold si no se configura?
0
1
2
3
Tienes este código:
val actvCiudades = findViewById
No tendrá efecto si no se asigna un adapter.
Empezará a mostrar sugerencias desde que el usuario escriba 1 carácter.
Impide que el usuario borre el texto.
Muestra siempre todas las opciones, aunque no se escriba nada.
¿Por qué en AutoCompleteTextView no se suelen definir las opciones directamente en XML como en Spinner?
Porque está prohibido por Android.
Porque siempre requiere datos remotos.
Porque se espera rellenarlo desde código con un ArrayAdapter, normalmente con datos más dinámicos.
Porque no admite ArrayAdapter.
¿Qué evento usarías en un AutoCompleteTextView para saber exactamente qué opción del desplegable seleccionó el usuario?
setOnFocusChangeListener
addTextChangedListener
setOnItemClickListener
setOnDismissListener
¿Cuál es el propósito principal de setOnFocusChangeListener en un AutoCompleteTextView?
Detectar qué elemento de la lista ha sido pulsado.
Validar o limpiar errores al entrar o salir del campo.
Filtrar dinámicamente las sugerencias.
Cerrar el teclado cuando se selecciona una opción.
¿Qué característica tiene addTextChangedListener sobre un AutoCompleteTextView o EditText?
Se dispara solo una vez cuando se crea el campo.
Se dispara únicamente al perder el foco.
Notifica múltiples veces durante la escritura, permitiendo validación y lógica en tiempo real.
Solo notifica cuando el texto queda vacío.
¿Para qué se usa setOnDismissListener en AutoCompleteTextView?
Para controlar el cierre del desplegable de sugerencias, haya o no selección.
Para validar carácter a carácter.
Para bloquear el cierre del menú.
Para cambiar el color del desplegable.
¿Qué control de selección usarías para permitir una sola selección visible a la vez con muy pocas opciones (p. ej. 3)?
Spinner
RadioButton + RadioGroup
CheckBox
SeekBar
¿Qué control se recomienda como reemplazo moderno del Spinner en UIs basadas en Material Design?
AutoCompleteTextView sin más
RecyclerView
Exposed Dropdown de Material
ListView
Dado este código para un Spinner: val estados = listOf("Activo", "Pendiente", "Archivado") val adapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, estados) adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spEstado.adapter = adapter ¿Qué hace setDropDownViewResource?
Cambia el layout del elemento seleccionado (cerrado).
Configura el layout que se usa para cada fila en el desplegable.
Cambia el tema general de la app.
Establece el layout del hint del Spinner.
¿Qué interfaz suele implementarse para capturar el elemento seleccionado en un Spinner?
TextWatcher
AdapterView.OnItemSelectedListener
OnClickListener
OnFocusChangeListener
¿Cuándo se dispara normalmente onItemSelected la primera vez en un Spinner, incluso sin interacción explícita del usuario?
Nunca, solo si el usuario hace clic.
Justo después de asignar el adapter, seleccionando la primera opción.
Solo cuando se cierra la Activity.
Cuando se cambia la orientación, pero no al inicio.
¿Qué desventaja de UX tiene el Spinner en comparación con controles modernos como Exposed Dropdown o AutoCompleteTextView?
No soporta adaptadores.
Es menos discoverable, requiere más clics y oculta las opciones hasta que se pulsa.
No funciona en modo oscuro.
No se puede usar en móviles antiguos.
Dado este fragmento para AutoCompleteTextView: actvCiudades.setOnItemClickListener { parent, view, position, id -> val ciudadSeleccionada = parent.getItemAtPosition(position) as String } ¿Qué representa parent?
Siempre es la Activity.
Es el teclado (IME).
Es el AdapterView que contiene el AutoCompleteTextView y sus datos.
Es el layout root XML.
¿Qué control de selección usarías para permitir múltiples valores autocompletados separados (por ejemplo, destinatarios de un correo)?
AutoCompleteTextView
MultiAutoCompleteTextView
Spinner
NumberPicker
¿Cuál de estos controles se ajusta mejor a seleccionar un rango (mínimo y máximo) de valores, como un rango de precios?
SeekBar
RangeSlider
NumberPicker
Spinner
Tienes un filtro por categorías que permite marcar varias etiquetas a la vez de forma visual (tipo chips). ¿Qué control sugiere el material?
RadioGroup
ChipGroup
Spinner
EditText
¿Qué patrón de diseño se incumple si rellenas un Spinner directamente con una lista enorme desde el hilo principal sin usar adaptadores ni hilos de fondo adicionales?
Separación de responsabilidades (demasiada lógica en la UI).
Uso de MVC.
Uso de patrones creacionales.
Ninguno, es correcto.
En un formulario complejo, decides usar AutoCompleteTextView para provincias. ¿Qué validación extra sería necesaria además del autocompletado?
Verificar que el texto final coincide con una opción de la lista.
Verificar que el usuario ha pulsado dos veces la opción.
Verificar que la provincia tiene más de 5 letras.
No es necesaria ninguna validación.
Dado este código incorrecto:
val adapter = ArrayAdapter
Falta indicar el layout del dropdown.
No se ha pasado la lista de datos al ArrayAdapter.
simple_list_item_1 no puede usarse con Spinners.
Hay que usar siempre un adapter personalizado.
En este código de Spinner: spEstado.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { // lógica } override fun onNothingSelected(parent: AdapterView<*>) { } } ¿Cuándo se ejecuta onNothingSelected?
Cuando el usuario borra el texto seleccionado.
Cuando no hay ningún elemento seleccionado en el Spinner (situación rara).
Siempre que se cambia de opción.
Nunca se llama en Android.
En un AutoCompleteTextView, ¿por qué puede ser peligroso basar toda la lógica en addTextChangedListener sin usar setOnItemClickListener?
Porque addTextChangedListener no funciona con adaptadores.
Porque no distingue entre texto escrito y opción seleccionada, lo que complica saber qué elemento eligió el usuario.
Porque bloquea el teclado.
Porque siempre se ejecuta en un hilo de fondo.
Si necesitas que un Spinner se actualice cuando cambian los datos (por ejemplo, tras llamar a una API), ¿qué paso es imprescindible tras modificar la lista usada por el ArrayAdapter?
Volver a crear la Activity.
Llamar a adapter.notifyDataSetChanged().
Limpiar el foco del Spinner.
No hace falta nada; se actualiza solo.
En una pantalla de filtros avanzados tienes dos campos: uno para seleccionar una ciudad entre muchas y otro para elegir un estado entre 3 valores (“Activo”, “Pendiente”, “Archivado”). ¿Qué combinación de controles se ajusta mejor?
Ciudad: Spinner; Estado: AutoCompleteTextView
Ciudad: AutoCompleteTextView; Estado: Spinner
Ambos: Spinner
Ambos: AutoCompleteTextView
¿Cuál es la función principal de un TextView en Android?
Permitir escribir texto editable
Mostrar texto fijo o generado por la lógica de la app
Reproducir audio en segundo plano
Dibujar formas geométricas
¿Qué atributo define el texto que se ve dentro de un TextView en el XML del layout?
android:label
android:message
android:text
¿Qué significa exactamente android:layout_width="wrap_content" en un TextView?
El TextView ocupa todo el ancho del padre
El TextView se adapta al tamaño de su contenido
El texto se fuerza a una sola línea
El TextView se oculta si no hay texto
Para el tamaño de letra de un TextView, ¿qué unidad es la recomendada para respetar las preferencias de accesibilidad del usuario?
dp
px
sp
pt
¿En qué carpeta de recursos deben guardarse las fuentes personalizadas para usarlas en un TextView?
res/raw
res/assets
res/font
res/fonts_custom
¿Qué propiedad debes usar para que un TextView muestre "…" al final cuando el texto no cabe en una línea visible?
android:truncate="true"
android:cutText="true"
android:overflow="dots"
android:ellipsize="end"
¿Qué atributo controla la alineación del texto dentro del área del TextView?
android:layout_gravity
android:gravity
android:position
android:textAlignmentParent
¿Qué archivo de recursos se utiliza para almacenar textos reutilizables y traducibles de la aplicación?
colors.xml
styles.xml
strings.xml
dimens.xml
En Kotlin, ¿cuál de las siguientes instrucciones cambia correctamente el texto de un TextView llamado tvMensaje?
tvMensaje.value = "Hola"
tvMensaje.message("Hola")
tvMensaje.text = "Hola"
tvMensaje.setValue("Hola")
Dentro de un OnClickListener, ¿qué propiedad de la vista recibida como parámetro te permite saber qué componente lanzó el evento?
view.tag
view.id
view.name
context.viewId
¿Qué devuelve resources.getResourceEntryName(view.id) en una Activity?
El texto actual del TextView
El nombre del paquete de la app
El nombre del identificador, por ejemplo "tvTitulo"
El valor numérico del color del texto
¿Qué tipo de dato devuelve el bloque lambda de setOnLongClickListener en un TextView?
Unit
Int
Boolean
String
¿Qué método de la clase Resources permite obtener el nombre simbólico del recurso a partir de su id entero?
getNameById()
getViewName()
getResourceEntryName()
getResourceStringName()
¿Qué hace realmente la función apply {} cuando la usamos sobre un TextView en Kotlin?
Ejecuta un bloque sin devolver nada
Configura el objeto y devuelve ese mismo objeto tras aplicarle los cambios
Crea un hilo nuevo para cada llamada
Libera la memoria del objeto tras el bloque
¿Cuál de los siguientes usos de apply {} es correcto con un TextView?
tvMensaje.apply("Hola")
tvMensaje.apply { text = "Hola"; textSize = 18f }
apply { tvMensaje.text = "Hola" }
apply(tvMensaje) { it.text = "Hola" }
Dado este código:
val tv = findViewById
tv vale Unit
tv es el propio TextView configurado
El código no compila porque apply no devuelve nada
textSize no puede modificarse dentro de apply
Supón este XML:
Solo una línea, sin puntos suspensivos
Hasta 3 líneas visibles y, si no cabe, "..." en la última
Solo muestra las 2 primeras líneas
Muestra todo el texto sin corte
Tienes este código de evento: tvTitulo.setOnClickListener { view -> val nombreId = resources.getResourceEntryName(view.id) Toast.makeText(this, nombreId, Toast.LENGTH_SHORT).show() } ¿Qué se mostrará en el Toast al pulsar sobre tvTitulo?
El texto actual del TextView
El valor entero del id
El nombre del recurso, por ejemplo "tvTitulo"
El nombre del paquete de la app
¿Cuál es la ventaja de usar un recurso @font/roboto en lugar de poner la fuente directamente desde una ruta absoluta?
Mejora el rendimiento del compilador
Facilita la reutilización y centraliza la gestión de la tipografía en recursos
Evita usar TextView
Permite cambiar de fuente solo en tiempo de ejecución
En un TextView, ¿qué combinación de atributos es más coherente para mostrar un título centrado, con tamaño grande y en mayúsculas automáticas?
textSize="24sp", gravity="center", textAllCaps="true"
textSize="24dp", layout_gravity="center", textAllCaps="false"
textSize="24px", gravity="left", textAllCaps="true"
textSize="wrap_content", gravity="center_vertical"
¿Cuál es la característica principal de RelativeLayout frente a otros contenedores como LinearLayout?
Coloca los hijos en columnas y filas fijas
Posiciona las vistas hijas en relación al padre o a otros hermanos
Solo admite un hijo como máximo
No permite márgenes ni padding
¿En qué casos no se recomienda usar RelativeLayout y se prefiere ConstraintLayout?
Formularios muy simples con dos campos
Diseños complejos y responsivos que requieren alto rendimiento
Pantallas sin texto
Listas con RecyclerView
¿Qué atributo es imprescindible en una vista hija si quieres que otras vistas del RelativeLayout puedan referenciarla en reglas como layout_below?
android:tag
android:name
android:id
android:label
¿Cuál de estos atributos alinea un hijo al borde superior del padre RelativeLayout?
android:layout_alignParentTop="true"
android:layout_alignTop="@id/parent"
android:layout_toStartOf="@id/top"
android:layout_centerVertical="true"
¿Qué ventaja tiene usar layout_toStartOf y layout_toEndOf frente a layout_toLeftOf y layout_toRightOf?
Son más cortos de escribir
Hacen que el layout ignore los márgenes
Permiten soporte correcto para idiomas RTL
Evitan la necesidad de android:id en las vistas
¿Qué atributo centra una vista justo en el eje horizontal del padre, sin afectar al eje vertical?
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center_horizontal"
android:layout_alignParentStart="true"
¿Cuál de estas combinaciones puede generar comportamientos extraños si el ancho es wrap_content?
alignParentStart="true" y alignParentTop="true"
centerHorizontal="true" y centerVertical="true"
alignParentStart="true" y alignParentEnd="true"
below y marginTop
En un RelativeLayout con un TextView con layout_centerHorizontal="true" y layout_alignParentTop="true", ¿dónde se colocará?
Esquina superior-inicio
Esquina superior-fin
Centrado horizontalmente, pegado a la parte superior
Centrada exactamente en la pantalla
¿Qué hace el atributo android:layout_alignBaseline="@id/otro"?
Alinea la parte superior de ambas vistas
Alinea la parte inferior de ambas vistas
Alinea la línea base del texto de dos vistas con texto
No tiene efecto en TextView
¿Qué diferencia hay entre layout_centerInParent="true" y combinar layout_centerHorizontal="true" + layout_centerVertical="true"?
Son equivalentes
centerInParent solo centra verticalmente
centerInParent requiere márgenes
centerInParent solo funciona con match_parent
¿Qué atributo se usa para pegar una vista al borde inferior del padre en RelativeLayout?
layout_toEndOf
layout_alignParentBottom
layout_below
layout_alignBottom
Dado este XML:
Se coloca a la derecha
Se coloca debajo y alineado al inicio con título
Se coloca a la izquierda y centrado verticalmente
Se coloca en el centro del padre
¿Qué atributo usarías para colocar una vista A a la derecha lógica de una vista B?
layout_toEndOf="@id/B"
layout_toRightOf="@id/B" (recomendado)
layout_alignEnd="@id/B"
layout_below="@id/B"
En una tarjeta de perfil (avatar, nombre, botón Seguir), si el botón se sitúa a la derecha del avatar, ¿qué regla se usa para esa posición horizontal?
layout_toStartOf="@id/avatar"
layout_toEndOf="@id/avatar"
layout_alignBottom="@id/avatar"
layout_below="@id/avatar"
Cuando se crea una vista desde código para añadirla a un RelativeLayout, ¿qué tipo de LayoutParams utilizar?
LinearLayout.LayoutParams
FrameLayout.LayoutParams
RecyclerView.LayoutParams
RelativeLayout.LayoutParams
En este código de Kotlin para un TextView en RelativeLayout: val params = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { addRule(RelativeLayout.ALIGN_PARENT_TOP) addRule(RelativeLayout.CENTER_HORIZONTAL) } ¿Dónde se coloca el TextView?
Centro exacto del padre
Esquina superior-inicio
Esquina superior-fin
Pegado arriba y centrado horizontalmente
¿Qué sucede si a una vista se le aplica layout_below="@id/A" y también layout_alignTop="@id/A"?
Es una combinación coherente
Las reglas se contradicen y pueden generar resultados imprevisibles
Android ignora ambas reglas
El compilador no permite compilar
¿Qué atributo se utiliza para alinear verticalmente el borde superior de una vista con el de otra vista dentro del mismo RelativeLayout?
layout_alignTop="@id/otro"
layout_alignStart="@id/otro"
layout_toEndOf="@id/otro"
layout_centerVertical="true"
En un RelativeLayout, ¿qué combinación de reglas colocarían una vista B debajo de A y alineada a su final (derecha lógica)?
below="@id/A" + alignStart="@id/A"
above="@id/A" + alignEnd="@id/A"
below="@id/A" + alignEnd="@id/A"
toEndOf="@id/A" + alignTop="@id/A"
¿Cuál de estas afirmaciones refleja mejor el uso recomendado de RelativeLayout hoy en día?
Debe usarse siempre en lugar de cualquier otro contenedor
Es ideal para UIs muy complejas y animadas
Se sigue usando en interfaces simples o heredadas, pero para diseños complejos se prefiere ConstraintLayout
Está obsoleto y ya no se puede usar
¿Cuál es la función principal de una Guideline en ConstraintLayout?
Mostrar una línea visible de división
Servir como referencia invisible para posicionar otras vistas mediante constraints
Reemplazar al LinearLayout
Crear automáticamente márgenes iguales
¿Qué atributo define si una Guideline es vertical u horizontal?
android:orientation
app:layout_constraintGuide_orientation
tools:orientation
Se infiere automáticamente
¿Qué valor de android:orientation debe tener una Guideline que divide la pantalla en izquierda/derecha?
horizontal
vertical
diagonal
center
Dado este XML de Guideline vertical al 25%: app:layout_constraintGuide_percent="0.25" ¿Dónde se coloca?
Al 25% de la altura del padre
Al 25% del ancho del padre desde la izquierda
Al 25% del ancho desde la derecha
En el centro
¿Qué diferencia hay entre layout_constraintGuide_percent y layout_constraintGuide_begin?
percent usa porcentaje del tamaño del padre; begin usa desplazamiento fijo desde el borde inicial
percent es solo para horizontales; begin, solo verticales
begin es más preciso que percent
Son sinónimos
¿Qué indica app:layout_constraintGuide_begin="16dp" en una Guideline vertical?
16dp desde el borde superior
16dp desde el borde izquierdo
16dp de margen global
16dp de ancho
En móvil y tablet, ¿qué ventaja tiene una Guideline con percent=0.5 frente a begin="200dp"?
Mantiene la posición proporcional en cualquier tamaño de pantalla
begin se escala automáticamente; percent no
No hay ventaja
begin es solo para teléfonos
Para anclar un TextView justo a la derecha de una Guideline vertical llamada guideline25, ¿qué constraint usas?
Start_toEndOf="@id/guideline25"
End_toStartOf="@id/guideline25"
Top_toBottomOf="@id/guideline25"
Bottom_toTopOf="@id/guideline25"
¿Qué ocurre si anclas la izquierda de un botón a una Guideline vertical y la derecha al borde del padre con ancho 0dp?
El botón colapsa
El botón ocupa todo el espacio entre la Guideline y el borde derecho
El botón se centra
Android lanza una excepción
¿Qué ventaja tienen las Guidelines para construir un diseño tipo grid?
Reducen en tiempo de ejecución el número de vistas
Sirven de columnas y filas invisibles reutilizables por muchas vistas
Obligan a usar porcentajes
Permiten animar el layout automáticamente
¿Qué atributo fija una Guideline a una distancia desde el borde final del padre?
layout_constraintGuide_end
layout_constraintGuide_toEnd
layout_marginEnd
layout_constraintGuide_reverse
Guideline horizontal con layout_constraintGuide_end="64dp". ¿Dónde se coloca?
64dp desde el borde superior
Al 64% de la altura
64dp desde el borde inferior
Es inválido
¿Qué layout_width y layout_height se suele usar en una Guideline?
match_parent
wrap_content
0dp
Es obligatorio match_parent
¿Qué sucede si constriñes una vista entre dos Guidelines verticales y ancho 0dp?
Ancho 0
Ancho mínimo del texto
Ancho estirado para ocupar el espacio entre ambas
Vista fuera de la pantalla
En ConstraintLayout, ¿qué significa 0dp como tamaño cuando una vista tiene constraints a ambos lados horizontal?
Se calcula automáticamente según los constraints
Mide siempre 0 píxeles
Ignora los constraints laterales
Se comporta como wrap_content
¿Se puede animar la posición de una Guideline (porcentaje) para crear un efecto de panel deslizante?
No
Sí, cambiando su percent dinámicamente en código
Solo en XML
Solo en Compose
Si defines una Guideline vertical al 50% y quieres centrar un ImageView respecto a ella, ¿qué problema hay?
Ninguno
ConstraintLayout no permite centrar con Guideline
El “centro” respecto a una línea no tiene sentido; solo puedes anclar start/end
La Guideline se convierte en barrera
¿Qué herramienta de Android Studio facilita crear Guidelines arrastrando desde el borde del layout?
Layout Inspector
Constraints Panel
Design Surface con “Add Guideline”
Palette Manager
¿Cuál de estas afirmaciones sobre Guidelines es correcta?
Pueden tener hijos dentro de ellas
No son contenedores; son pseudo‑vistas sin contenido
Solo funcionan en modo paisaje
Deben declararse siempre al final del XML
En un formulario, colocas una Guideline vertical al 30% y alineas etiquetas a la izquierda y campos a la derecha. ¿Qué beneficio obtienes?
Texto centrado automáticamente
Alineación consistente sin calcular márgenes distintos para cada fila
Evitas usar IDs
El formulario se adapta solo a modo oscuro
¿Qué tipo de Guideline usarías para definir una franja superior reservada para un toolbar de 56dp de altura fija?
Horizontal percent="0.1"
Horizontal begin="56dp"
Vertical begin="56dp"
Vertical end="56dp"
¿Qué ocurre si no le asignas id a una Guideline?
No compila
Existe pero no puede ser referenciada por otras vistas
Se genera un id automático
Se comporta como un Space
¿Qué combinación define correctamente una Guideline vertical a porcentaje, compatible con RTL?
orientation="vertical", percent="0.3"
orientation="horizontal", percent="0.3"
orientation="vertical", begin="30%"
orientation="vertical", end="30%"
En diseño responsive, defines dos Guidelines verticales en 0.25 y 0.75 y una tarjeta entre ellas (ancho 0dp). ¿Qué pasa al rotar a landscape?
La tarjeta mantiene su ancho relativo (50% central)
La tarjeta se contrae a 0
La tarjeta se sale de la pantalla
Hay que recalcular los porcentajes
¿Es posible mezclar Guidelines definidas por percent con otras definidas por begin en el mismo ConstraintLayout?
No
Sí, pero solo si son horizontales
Sí, se pueden combinar según el diseño
Sí, pero Android ignora las de percent
¿Qué diferencia práctica hay entre usar márgenes grandes y una Guideline para “dejar un margen” izquierdo?
Los márgenes son más precisos
Las Guidelines permiten anclar muchas vistas a la misma referencia; el margen es local a cada vista
Los márgenes no funcionan con ConstraintLayout
Las Guidelines consumen más rendimiento
¿Qué error conceptual comete un alumno si crea una Guideline vertical y luego intenta meter un Button “dentro de ella” en el XML?
Olvida poner match_parent
Confunde Guideline (referencia) con ViewGroup (contenedor)
Usa mal el namespace app:
No usa android:id en el Button
En un examen te piden: “Coloca una Guideline horizontal al 40% y alinea un TextView justo debajo de la Guideline”. ¿Qué constraints verticales necesita el TextView?
Top_toTopOf="@id/guideline40"
Bottom_toTopOf="@id/guideline40"
Top_toBottomOf="@id/guideline40"
Bottom_toBottomOf="@id/guideline40"
¿Cuál de estas frases explica mejor cuándo tiene sentido no usar Guideline y usar directamente constraints entre vistas?
Siempre es obligatorio usar Guideline
Si solo tienes dos vistas y una debe ir debajo de la otra, las constraints directas son suficientes
Cuando el diseño es muy complejo
Cuando se quiere soportar tablets
