Cómo usar FrameLayout en Android: Tutorial fácil

Contenido del Bootcamp Dirigido por: | Última modificación: 29 de octubre de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Aún no sabes cómo construir interfaces visualmente atractivas y funcionales en Android? Estás de suerte, porque en este tutorial te explicaremos paso a paso cómo implementar y personalizar el FrameLayout para tus proyectos. Además, incluiremos un ejemplo práctico para que veas cómo se usa en una app básica.

framelayout en Android

Conoce framelayout: El contenedor básico en Android

El FrameLayout es uno de los contenedores más simples que puedes usar en Android. Te sirve para cuando solo necesitas mostrar un solo elemento o colocar varios componentes apilados, uno encima de otro. Este tipo de layout es perfecto para agregar vistas sencillas o incluso para mostrar un fragmento en una interfaz sin mucha complejidad.

Suele usarse para:

  • Cargar un único fragmento o vista
  • Crear efectos de apilamiento visual (por ejemplo, superponer texto sobre una imagen)
  • Posicionar elementos en posiciones específicas dentro de la pantalla

Cómo agregar un FrameLayout en tu proyecto Android

Paso 1: Configuración en XML

Para comenzar, puedes añadir un FrameLayout a tu archivo XML.

Este componente requiere dos atributos básicos: layout_width y layout_height, que definen el tamaño del contenedor.

Así es como se ve:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Puedes añadir más componentes aquí -->
</FrameLayout>

Si prefieres que este tipo de layout no contenga más elementos, puedes cerrarlo en una sola línea:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" />

Paso 2: Define los atributos clave

Cada FrameLayout puede recibir atributos específicos para personalizar su comportamiento. Los atributos principales para cualquier componente de vista son layout_width y layout_height, que pueden tomar estos:

  • match_parent: El componente ocupará todo el espacio disponible en su contenedor principal.
  • wrap_content: El componente ajustará su tamaño al mínimo necesario.
  • Valor específico: Puedes definir un tamaño exacto, como 250dp.

Así es como se ven estos valores con tres TextViews:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Texto que ocupa el ancho completo" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Texto con ancho mínimo" />

<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Texto con ancho fijo de 200dp" />
</FrameLayout>

Como ves, este código crea tres TextViews, cada uno con un ancho distinto para ilustrar el uso de match_parent, wrap_content y un valor específico.

Posiciona vistas en FrameLayout usando layout_gravity

Con el atributo layout_gravity puedes colocar elementos en diferentes posiciones dentro del contenedor.

Esto es útil cuando quieres que un elemento se posicione en el centro o en una esquina específica de este tipo de layout.

Algunas opciones comunes de layout_gravity son:

  • center: Centra el componente tanto horizontal como verticalmente.
  • center_horizontal o center_vertical: Centra el componente solo en un eje.
  • start y end: Coloca el componente a la izquierda o derecha, respectivamente.
  • top y bottom: Coloca el componente en la parte superior o inferior.

Ejemplo: Posiciona un botón en la esquina inferior derecha

Con este código podrás colocar un botón en la esquina inferior derecha:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Haz clic aquí"
android:layout_gravity="bottom|end"
android:background="#4CAF50" />
</FrameLayout>

Este botón se verá en la esquina inferior derecha, gracias a la combinación de bottom y end en el atributo layout_gravity.

Ejemplo práctico: Creando una capa de texto sobre una imagen

Vas a crear una vista donde el texto esté superpuesto sobre una imagen. Te quedaría así:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="300dp">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/imagen_fondo"
android:scaleType="centerCrop" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Texto sobre imagen"
android:textSize="24sp"
android:textColor="#FFFFFF"
android:background="#AA000000" />
</FrameLayout>

En este caso, este tipo de layout contiene un ImageView que ocupa todo el espacio disponible, y sobre él se coloca un TextView centrado. Esto es posible gracias a que este layout permite apilar elementos uno encima de otro.

Ejercicio adicional: Coloca múltiples vistas en una cuadrícula

Con este ejercicio adicional podrás practicar más: intenta crear una cuadrícula de vistas dentro de un FrameLayout, similar a un tablero de tres filas y tres columnas.

Recuerda que cada vista debe estar posicionada en una de las posiciones de la cuadrícula.

🔴 ¿Quieres entrar de lleno al Desarrollo Mobile? 🔴

Descubre el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Desarrollo de Apps Móviles por una semana

Te tendría que queda algo así:

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- Vista superior izquierda -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="start|top"
android:background="#FF0000" />

<!-- Vista superior centro -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal|top"
android:background="#00FF00" />

<!-- Vista superior derecha -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="end|top"
android:background="#0000FF" />

<!-- Vista central izquierda -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="start|center_vertical"
android:background="#FFFF00" />

<!-- Vista central centro -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="#FF00FF" />

<!-- Vista central derecha -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="end|center_vertical"
android:background="#00FFFF" />

<!-- Vista inferior izquierda -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="start|bottom"
android:background="#FFA500" />

<!-- Vista inferior centro -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal|bottom"
android:background="#800080" />

<!-- Vista inferior derecha -->
<View
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="end|bottom"
android:background="#FFC0CB" />
</FrameLayout>

En esta cuadrícula, cada View está colocada en una posición diferente mediante layout_gravity, lo que te permite diseñar una cuadrícula básica sin necesidad de un GridLayout.

Conoce las mejores prácticas y herramientas para el desarrollo de aplicaciones móviles en el Bootcamp de Desarrollo de Aplicaciones Móviles iOS & Android de KeepCoding. Aprenderás desde lo esencial hasta técnicas avanzadas, logrando habilidades que transformarán tu carrera y te abrirán puertas en la industria tecnológica.

Jose Luis Bustos
Jose Luis Bustos

Lead Software Architect & Coordinador del Bootcamp en Desarrollo de Apps Móviles iOS & Android.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo de apps móviles ios & Android

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado