Professional Documents
Culture Documents
FrameLayout
ste es el ms simple de todos los layouts de Android. Un FrameLayout
coloca todos sus controles hijos alineados con su esquina superior
izquierda, de forma que cada control quedar oculto por el control
siguiente (a menos que ste ltimo tenga transparencia). Por ello, suele
utilizarse para mostrar un nico control en su interior, a modo de
contenedor (placeholder) sencillo para un slo elemento sustituible, por
ejemplo una imagen.
Los componentes incluidos en un FrameLayout podrn establecer sus
propiedades android: layout_widthy android:layout_height, que podrn
tomar los valores match_parent (para que el control hijo tome la
dimensin de su layout contenedor) o wrap_content (para que el
control hijo tome la dimensin de su contenido). Veamos un ejemplo:
Ejemplo:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/TxtNombre"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text" />
</FrameLayout>
LinearLayout
El siguiente tipo de layout en cuanto a nivel de complejidad es el
LinearLayout. Este layout apila uno tras otros todos sus elementos hijos
en sentido horizontal o vertical segn se establezca su propiedadandroid:
orientation.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
Instructora: Zulma Anglica Argello Matas Pgina 2
Manual de PROGRAMACION ANDROID E-learning
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText android:id="@+id/TxtNombre"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button android:id="@+id/BtnAceptar"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText android:id="@+id/TxtDato1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:layout_weight="1" />
<EditText android:id="@+id/TxtDato2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:layout_weight="2" />
</LinearLayout>
Con el cdigo anterior conseguiramos un layout como el siguiente:
TableLayout
Un TableLayout permite distribuir sus elementos hijos de forma
tabular, definiendo las filas y columnas necesarias, y la posicin de
cada componente dentro de la tabla.
de que no existe ningn objeto especial para definir una columna (algo
as como un TableColumn) sino que directamente insertaremos los
controles necesarios dentro del TableRow y cada componente insertado
(que puede ser un control sencillo o incluso otro ViewGroup)
corresponder a una columna de la tabla. De esta forma, el nmero final
de filas de la tabla se corresponder con el nmero de elementos
TableRow insertados, y el nmero total de columnas quedar
determinado por el nmero de componentes de la fila que ms
componentes contenga.
<TableLayout
mlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow>
GridLayout
Este tipo de layout fue incluido a partir de la API 14 (Android 4.0) y sus
caractersticas son similares alTableLayout, ya que se utiliza igualmente
para distribuir los diferentes elementos de la interfaz de forma tabular,
distribuidos en filas y columnas. La diferencia entre ellos radica en la
forma que tiene el GridLayout de colocar y distribuir sus elementos hijos
en el espacio disponible. En este caso, a diferencia del TableLayout
indicaremos el nmero de filas y columnas como propiedades del layout,
mediante android:rowCount yandroid:columnCount. Con estos datos ya
no es necesario ningn tipo de elemento para indicar las filas, como
hacamos con el elemento TableRow del TableLayout, sino que los
diferentes elementos hijos se irn colocando ordenadamente por filas o
columnas (dependiendo de la propiedad android:orientation) hasta
completar el nmero de filas o columnas indicadas en los atributos
anteriores. Adicionalmente, igual que en el caso anterior, tambin
tendremos disponibles las propiedades android:layout_rowSpan
yandroid:layout_columnSpan par a conseguir que una celda ocupe el
lugar de varias filas o columnas.
android:layout_width="match_parent"
android:layout_height="match_parent"
android:rowCount="2"
android:columnCount="3"
android:orientation="horizontal" >
android:layout_columnSpan="2" />
<TextView android:text="Celda 3.2" />
</GridLayout>
RelativeLayout
El ltimo tipo de layout que vamos a ver es el
RelativeLayout. Este layout permite especificar la posicin
de cada elemento de forma relativa a su elemento padre o
a cualquier otro elemento incluido en el propio layout. De
esta forma, al incluir un nuevo elemento X podremos
indicar por ejemplo que debe
colocarse debajo del elemento Y yalineado a la derecha del
layout padre. Veamos esto en el ejemplo siguiente:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText android:id="@+id/TxtNombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" /> 10
<Button android:id="@+id/BtnAceptar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/TxtNombre"
android:layout_alignParentRight="true" />
</RelativeLayout>
En el ejemplo, el botn BtnAceptar se colocar debajo del cuadro de
texto TxtNombre(android:layout_below=@id/TxtNombre) y alineado
a la derecha del layout padre (android:layout_alignParentRight=true),
Quedara algo as:
android:layout_above
android:layout_below
android:layout_toLeftOf
android:layout_toRightOf
android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
android:layout_alignBottom
android:layout_alignBaseline
Posicin relativa al layout padre:
android:layout_alignParentLeft
android:layout_alignParentRight
android:layout_alignParentTop
android:layout_alignParentBottom
android:layout_centerHorizontal
android:layout_centerVertical
android:layout_centerInParent
Por ltimo indicar que cualquiera de los tipos de layout anteriores poseen
otras propiedades comunes como por ejemplo los mrgenes exteriores
(margin) e interiores (padding) que pueden establecerse mediante los
siguientes atributos:
Opciones de margen exterior:
android:layout_margin
android:layout_marginBottom
android:layout_marginTop
android:layout_marginLeft
android:layout_marginRight
Opciones de margen interior:
android:padding
android:paddingBottom
android:paddingTop
android:paddingLeft
android:paddingRight
EJERCICIOS
1 FRAMELAYOUT
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActividadPrincipal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Click aqui"
android:id="@+id/textView5"
android:layout_gravity="left|center_vertical"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ACEPTAR"
android:id="@+id/button"
android:layout_gravity="center" />
<Button
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="Saltar"
android:id="@+id/boton_saltar"
android:layout_gravity="center_horizontal|bottom"/>
</FrameLayout>
2 LINEARLAYOUT
android:weightSum="6"
Para distribuir todos los elementos sobre el espacio total del layout,
puedes usar el atributo height con valor cero.
android:layout_height="0dp"
android:layout_weight="3"
Vayamos a la prctica
<TextView
android:id="@+id/texto_conectar"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="Conectar"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/input_usuario"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:hint="Correo" />
<EditText
android:id="@+id/input_contrasena"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:ems="10"
android:hint="Contrasea"
android:inputType="textPassword" />
<Button
android:id="@+id/boton_iniciar_sesion"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="Iniciar Sesion" />
<TextView
android:id="@+id/texto_olvidaste_contrasena"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="Olvidaste tu constrasea?"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#0E8AEE" />
</LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ejemplo_frame_layout);
}
3 RELATIVELAYOUT
<EditText
android:id="@+id/input_nombre"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:ems="10"
android:hint="Nombres"
android:inputType="textPersonName" />
<EditText
android:id="@+id/input_apellido"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/input_nombre"
android:ems="10"
android:hint="Apellidos"
android:inputType="textPersonName" />
<TextView
android:id="@+id/texto_estado_civil"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/input_apellido"
android:layout_marginRight="48dp"
android:paddingBottom="8dp"
android:paddingTop="16dp"
android:text="Estado civil"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/input_estado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/texto_estado_civil"
android:ems="5"
android:hint="S...."
android:inputType="textPersonName" />
<TextView
android:id="@+id/texto_cargo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/input_apellido"
android:layout_centerHorizontal="true"
android:layout_toRightOf="@+id/texto_estado_civil"
android:paddingBottom="8dp"
android:paddingTop="16dp"
android:text="Cargo"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/input_cargo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/texto_cargo"
android:ems="5"
android:hint="E...."
android:inputType="textPersonName" />
</RelativeLayout>
4 GRIDLAYOUT
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="0"
android:text="9" />
<TextView
android:id="@+id/numero_4"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="1"
android:text="4" />
<TextView
android:id="@+id/numero_5"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="1"
android:text="5" />
<TextView
android:id="@+id/numero_6"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="1"
android:text="6" />
<TextView
android:id="@+id/signo_por"
style="@style/AppTheme.BotonCalculadora.Rojo"
android:layout_column="3"
android:layout_gravity="fill"
android:layout_row="1"
android:gravity="center"
android:text="" />
<TextView
android:id="@+id/textView10"
style="@style/AppTheme.BotonCalculadora.Rojo"
android:layout_column="3"
android:layout_gravity="fill_horizontal"
android:layout_row="0"
android:text="" />
<TextView
android:id="@+id/numero_1"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_column="0"
android:layout_row="2"
android:text="1" />
<TextView
android:id="@+id/numero_2"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="2"
android:text="2" />
<TextView
android:id="@+id/numero_3"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="2"
android:text="3" />
<TextView
android:id="@+id/signo_menos"
style="@style/AppTheme.BotonCalculadora.Rojo"
android:layout_column="3"
android:layout_gravity="fill_horizontal"
android:layout_row="2"
android:gravity="center"
android:text="-" />
<TextView
android:id="@+id/punto"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_column="0"
android:layout_gravity="fill_horizontal"
android:layout_row="3"
android:gravity="center_horizontal"
android:text="." />
<TextView
android:id="@+id/cero"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_column="1"
android:layout_row="3"
android:text="0" />
<TextView
android:id="@+id/signo_igual"
style="@style/AppTheme.BotonCalculadora.Azul"
android:layout_column="2"
android:layout_gravity="fill_horizontal"
android:layout_row="3"
android:text="=" />
<TextView
android:id="@+id/signo_mas"
style="@style/AppTheme.BotonCalculadora.Rojo"
android:layout_column="3"
android:layout_gravity="fill_horizontal"
android:layout_row="3"
android:text="+" />
</GridLayout>
5 TABLELAYOUT
<TableRow android:background="#128675">
<TextView
android:layout_column="0"
android:padding="3dip"
android:text="Producto"
android:textColor="@android:color/white" />
<TextView
android:layout_column="2"
android:padding="3dip"
android:text="Subtotal"
android:textColor="@android:color/white" />
</TableRow>
<TableRow>
<TextView
android:layout_column="0"
android:padding="3dip"
android:text="Jabn de manos x 1" />
<TextView
android:layout_column="2"
android:gravity="left"
android:padding="3dip"
android:text="3.000 Gs" />
</TableRow>
<TableRow>
<TextView
android:layout_column="0"
android:padding="3dip"
android:text="Shampoo Monster x 1" />
<TextView
android:layout_column="2"
android:gravity="left"
android:padding="3dip"
android:text="15.000 Gs" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:padding="3dip"
android:text="Crema dental x 2" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:gravity="left"
android:padding="3dip"
android:text="18.000 Gs" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:padding="3dip"
android:text="Detergente Limpiabien x 1" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:gravity="left"
android:padding="3dip"
android:text="3.000 Gs" />
</TableRow>
<View
android:layout_height="2dip"
android:background="#FF909090" />
<TableRow>
<TextView
android:layout_column="1"
android:padding="3dip"
android:text="Subtotal"
android:textColor="#128675" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="left"
android:gravity="right"
android:padding="3dip"
android:text="39.000 Gs" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="3dip"
android:text="Costo envo"
android:textColor="#128675" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="left"
android:gravity="right"
android:padding="3dip"
android:text="5.000 Gs" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="3dip"
android:text="I.V.A."
android:textColor="#128675" />
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="left"
android:gravity="right"
android:padding="3dip"
android:text="3.900 Gs" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="3dip"
android:text="Total"
android:textColor="#128675" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="left"
android:gravity="right"
android:padding="3dip"
android:text="$48,4" />
</TableRow>
</TableLayout>