¿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.

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.
🔴 ¿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 semanaRecuerda que cada vista debe estar posicionada en una de las posiciones de la cuadrícula.
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.