Android Desde Cero: Comprendiendo Vistas y Grupo de Vistas
Spanish (Español) translation by Viviana Brito (you can also view the original English article)
Dejando de lado un puñado de casos extremos, cada aplicación que construyas tiene algo de interfaz de usuario. En Android, esto se logra a través del uso de objetos Vistas o View
y Grupo de Vistas o ViewGroup
En este artículo, aprenderás sobre algunos de los componentes View
disponibles para la visualización de contenido y se le demostrará la forma en que son utilizados.
1. Vistas/Views
Los objetos View
son empleados específicamente para dibujar contenido en la pantalla del dispositivo Android. Mientras que puedes instanciar una View
en tu código Java, la forma más sencilla de usarlo, es a través de un archivo de diseño XML. Puedes ver un ejemplo de esto al crear una aplicación sencilla de Hola Mundo en Android Studio. El archivo layout está nombrado como activity_main.xml, y luce de esta forma.
1 |
<TextView
|
2 |
android:id="@+id/hello_world" |
3 |
android:layout_width="wrap_content" |
4 |
android:layout_height="wrap_content" |
5 |
android:text="Hello World!" /> |
El ejemplo anterior, muestra un tipo de View
que será visualizada en la pantalla. Los atributos layout_width
y layout_height
establecen que View
debería sólo tomar el espacio que sea necesario en la pantalla para visualizar el texto "¡Hola Mundo!" El atributo id
es la manera en que se puede hacer referencia a View
en tu código Java como se muestra a continuación:
1 |
setContentView(R.layout.activity_main); |
2 |
TextView textView = (TextView) findViewById(R.id.hello_world); |
Si bien puedes establecer atributos para una Vista o View
en XML, también puedes cambiar los atributos en tu código Java, como cambiar el texto del TextView
anterior.
1 |
textView.setText("This is a changed View"); |
El código anterior actualiza el texto del TextView
a "Esta es una Vista modificada". Cuando ejecutes la app aparecerá algo así.



Ahora que ya sabes cómo trabajar con objetos básicos View
, vamos a revisar algunos de los diferentes tipos que tienes disponible en el Android SDK.
Visualización de Vistas
TextView
Esta es una View
que empleamos en el ejemplo anterior. El trabajo principal del TextView
es mostrar texto en la pantalla de una aplicación Android. Mientras que esto pueda parecer una tarea sencilla, la clase TextView
contiene lógica compleja que permite visualizar el texto subrayado, hyperlinks, números de teléfono, emails, y otras funcionalidades útiles.
ImageView
Como implica su nombre, el ImageView
es designado específicamente para mostrar imágenes en la pantalla. Esto se puede utilizar para la visualización de los recursos almacenados en la aplicación o para la visualización de imágenes que se descargan desde Internet.
Entrada y Controles
Algunos objetos View
son utilizados para más que simplemente mostrar contenido a los usuarios. A veces necesitas recibir algún tipo de input o entrada para controlar tus aplicaciones. Afortunadamente, Android provee de varias subclases View
específicamente para este propósito.
Button
La clase Button
es uno de los controles más básicos disponibles en la app. Escucha los clicks del usuario y llama a un método en tu código, de forma que puedas responder apropiadamente.
Switch
y CheckBox
Las clases Switch
y CheckBox
tienen un estado activo e inactivo entre los que pueden alternarse. Esto es útil para cambiar los ajustes en una app. Versiones compatibles con Material Design, están disponibles a través de AppCompat support library
EditText
Esta subclase View
es una extensión de la clase TextView
y permite a los usuarios actualizar el texto que figura a través de una entrada de teclado.
Adapter Based Views
Si bien cada uno de los ejemplos anteriores de View
son elementos individuales, a veces deseas mostrar una colección de elementos. Estas clases View
, requieren la utilización de un Adapter
para manejar la manera en que se muestra la interfaz de usuario adecuada para cada elemento de una colección.
ListView
La clase ListView
es utilizada para mostrar una colección de elementos en una View
linear, de una sola columna y desplegable. Cada elemento individual puede ser seleccionado para visualizar más detalles o llevar a cabo una acción relacionada a ese elemento.
GridView
Similar a la clase ListView
, la clase GridView
emplea un Adapter
y muestra los elementos en múltiples columnas en la pantalla.
Spinner
La última colección de la clase View
sobre la que aprenderás en este tutorial, es la clase Spinner
. Acepta un Adapter
y enseña los elementos en un menú desplegable cuando el Spinner
es presionado para que un elemento pueda ser seleccionado por el usuario.
2. Grupos de Vistas o View Groups
Un ViewGroup
es un objeto invisible que se usa para contener otros objetos View
y ViewGroup
con el fin de organizar y controlar el layout de una pantalla. Los objetos ViewGroup
son utilizados para la creación de una jerarquía de objetos View
(ver abajo) de modo que pueda crear layouts más complejos. Dicho esto, cuánto más simple pueda mantenerse un layout, más simple será el desempeño.



Los objetos ViewGroup
pueden ser instanciados de la misma manera que los elementos View
estándar en XML o en código Java.
1 |
<?xml version="1.0" encoding="utf-8"?>
|
2 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
3 |
android:layout_width="match_parent" |
4 |
android:layout_height="match_parent" |
5 |
android:orientation="vertical"> |
6 |
<TextView
|
7 |
android:id="@+id/hello_world" |
8 |
android:layout_width="wrap_content" |
9 |
android:layout_height="wrap_content" |
10 |
android:text="Hello World!" /> |
11 |
<TextView
|
12 |
android:id="@+id/hello_world_2" |
13 |
android:layout_width="wrap_content" |
14 |
android:layout_height="wrap_content" |
15 |
android:text="Hello World 2!" /> |
16 |
</LinearLayout>
|
Mientras todas las clases ViewGroup
desempeñan una tarea similar, cada subclase ViewGroup
existe para un propósito específico. Veamos algunos de ellos.
LinearLayout
LinearLayout
existe para mostrar los elementos en un orden apilado, ya sea horizontal o verticalmente. Layouts lineares también pueden ser aplicados para asignar peso a los elementos View
hijos, de forma tal que estén espaciados en la pantalla con una proporción determinada uno del otro.
RelativeLayout
Esta subclase ViewGroup
, permite visualizar elementos en la pantalla relacionados entre sí, proporcionando más flexibilidad y libertad a la manera en que tu layout aparece, comparado con el LinearLayout
FrameLayout
Designado para mostrar sólo un View
hijo por vez, el FrameLayout
dibuja los elementos en una pila y provee una manera sencilla de visualizar un elemento en diferentes tipos de tamaños de pantalla.
ScrollView
Una extensión de FrameLayout
, la clase ScrollView
, maneja el despliegue de los objetos hijos en la pantalla.
ViewPager
Utilizado para administrar vistas múltiples mientras que sólo visualiza una a la vez, la clase ViewPager
acepta un Adapter
y permite a los usuarios deslizarse de izquierda a derecha para ver todos los elementos View
disponibles.
RecyclerView
La clase RecyclerView
es una subclase de ViewGroup
que está relacionada a las clases ListView
y GridView
y que ha sido puesto a disposición por Google a través de RecyclerView support library para las versiones anteriores de Android. La clase RecyclerView
requiere el uso de view holder design pattern para un eficiente reciclado del elemento y soporta el uso de un LayoutManager
, un decorador, y un animador de elementos a fin de convertir a este componente en algo increíblemente flexible a costa de la simplicidad.
CoordinatorLayout
Recientemente agregada a la biblioteca de soporte de diseño, la clase CoordinatorLayout
utiliza un objeto Behavior
o de Comportamiento para determinar cómo los elementos View
hijos deberían ser dispuestos y movidos mientras el usuario interactúa con tu app.
3. Vistas Personalizadas/Custom Views
Mientras que existe una amplia variedad de clases View
y ViewGroup
para que apliques a tus apps, a veces deseas crear algo nuevo que se adapte a tus necesidades. En este caso, puedes crear una nueva clase Java que extienda ya sea View
o ViewGroup
, dependiendo de lo que necesitas. El acto de crear una nueva subclase View
personalizada, está más allá del alcance de este artículo, pero puedes encontrar más información aquí: Envato Tuts+ tutorial.
Conclusión
En este tutorial, has aprendido sobre algunos de los componentes más básicos de Android, layouts y vistas. Teniendo en cuenta cuán fundamentales son estos componentes para Android, continuamente aprenderás cosas nuevas sobre ellos al trabajar con la plataforma Android y encontrarás nuevas maneras de hacer cosas increíbles aplicándolas en tus proyectos.
¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!