Los layout nos permiten posicionar cada objeto gráfico en el lugar que queramos de la pantalla, es decir, nos permite diseñar el aspecto gráfico que va a tener nuestra pantalla. Los layouts son de tipo ViewGroup, una subclase de View

Existen varios tipos de Layouts para Android, vamos a ver los más comunes:



FrameLayout

Este tipo de Layout es el más básico, coloca a sus objetos hijos en la parte superior izquierda de la pantalla.

<?xml version="1.0" encoding="utf-8"?>
<framelayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <textview
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello"/>

  <textview
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/app_name"/>
</framelayout>

Como se puede apreciar en en resultado, si hay más de un hijo, los objetos se amontonan unos encima de otros.

LinearLayout

Este tipo de layout coloca sus hijos unos detras de otros, también comenzando por la esquina superior izquierda de la pantalla. Podemos colocarlos alineados horizontalmente o verticalmente mediante su propiedad android:orientation=”horizontal | vertical”

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/app_name"
      android:background="#0ff"/>

  <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/hello"
      android:background="#ff0"/>
</linearlayout>

En este caso, he pueso un fondo de color a cada texto (con la propiedad android:background) para diferenciarlo bien, y he usado la horientación horizontal, de haber usado la orientación vertical, los textos aparecerían uno debajo del otro:

RelativeLayout

Este Layout permite que coloquemos los elementos en un lugar con respecto a la posición de otro, es decir, colocar un botón a la derecha de un texto, o centrarlo en la pantalla, o por ejemplo, colocar un texto encima de tal elemento y a la derecha de este otro.

Para conseguir esto, RelativeLayout proporciona propiedades como android:layout_toRightOf o android:layout_alignLeft, que toman como valores los identificadores de los objetos, o valores booleanos.

<?xml version="1.0" encoding="utf-8"?>
<relativelayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/app_name"
      android:background="#0ff"
      android:layout_centerinparent="true"
      android:id="@+id/text1"/>

  <textview
      android:id="@+id/text2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/hello"
      android:background="#ff0"
      android:layout_below="@id/text1"/>

</relativelayout>

Como vemos, hemos centrado el texto1 en la pantalla con android:layout_centerInParent=”true” y hemos puesto debajo del texto1 al texto2 con android:layout_below=”@id/text1″

Siguiente Tema: Programación Android: Interfaz gráfica - Componentes gráficos y Eventos