viernes, 3 de octubre de 2014

Plantillas con distribución relativa

Una plantilla RelativeLayout es una vista de grupo que muestra a sus vistas hija con posicionamiento relativo. El posicionamiento de una vista se especifica en función de otra vista (a la izquierda de o debajo de otra vista, por ejemplo) o en función del área descrita por la plantilla (alineada a la izquierda o al centro, por ejemplo).


Una plantilla con posicionamiento relativo nos proporciona una estructura plana, es decir, no existen vistas de grupo anidadas por lo que hay una mejora notable en el rendimiento. Estas plantillas son una buena alternativa al uso de vistas LinearLayout anidadas.

Posicionamiento.

Una plantilla RelativeLayout nos permite definir la posición de una vista hija con respecto a otra vista hija o con respecto a su vista padre. Por defecto, todas las vistas hija se posicionan en la parte superior izquierda de la plantilla. Algunos de los parámetros asociados a la plantilla (RelativeLayout.LayoutParams) que podremos especificar para cada vista hija son:
  • android:layout_alignParentTop
    Si vale true, hace coincidir el borde superior de la vista con el borde superior del padre.
  • android:layout_centerVertical
    Si vale true, centra verticalmente la vista con respecto al padre.
  • android:layout_below
    Posiciona el borde superior de la vista justo debajo de la vista especificada con su id.
  • android:layout_toRightOf
    Posiciona el borde izquierdo de la vista a la derecha de la vista especificada con su id.

Las dependencias entre vistas, a la hora de definir sus posicionamientos, pueden ser definidas sin importar su orden. Es decir, podremos declarar que una vista se posiciona en función de otra incluso cuando ésta última se declara con posterioridad a la primera.

Ejemplo.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>
El resultado del ejemplo quedaría:
Restultado del ejemplo

No hay comentarios:

Publicar un comentario