2012-07-23 47 views
6

Soy nuevo en la programación de Android, pero por lo mucho que he entendido de los diseños del documentation, RelativeLayout se utiliza principalmente cuando necesita las vistas basadas en algunas reglas y el FrameLayout cuando quiere superponer vistas.¿Diferencia entre el diseño de marco y relativo?

Pero desafortunadamente para el siguiente programa obtengo el trabajo de FrameLayout utilizando RelativeLayout. Hice mi trabajo pero para entenderlo, ¿me estoy perdiendo algo en la diferencia? Además, ¿cómo llegaron los botones a mi imagen? (. Incluso la otra imagen es la superposición)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/ic_launcher" 
    /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/ic_launcher" 
    android:layout_alignParentTop="true" 
    android:layout_alignLeft="@id/imageView1" 
    /> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/imageView1" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:weightSum="1.0" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Login" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Register" /> 

<Button 
    android:id="@+id/button3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.33" 
    android:text="Try application" /> 

</LinearLayout> 

</RelativeLayout> 
+0

http://stackoverflow.com/a/4905403/1434631 – Nermeen

Respuesta

16

El RelativeLayout puede utilizar:

android:layout_toEndOf="@id/some_view" 
android:layout_toStartOf="@id/some_view" 
android:layout_above="@id/some_view" 
android:layout_below="@id/some_view" 

para asegurarse vistas alineación correcta en relación el uno al otro. FrameLayout es muy similar, excepto que solo usa la gravedad para mostrar sus puntos de vista (sin relación).

También le sugiero que eche un vistazo al componente RestricciónDeLiminación. ConstraintLayout le permite crear diseños grandes y complejos con una jerarquía de vista plana (sin grupos de vista anidados). Es similar a RelativeLayout porque todas las vistas se presentan de acuerdo con las relaciones entre las vistas de hermanos y el diseño principal, pero es más flexible que RelativeLayout y más fácil de usar con el Editor de diseño de Android Studio.

8

RelativeLayout según la relación de puntos de vista. Es un administrador de diseño que le ayuda a organizar sus elementos de la interfaz de usuario en función de alguna regla. Puede especificar cosas como: alinéelo al borde izquierdo de los padres, colóquelo a la izquierda/derecha de estos elementos, etc.

FrameLayout permite ubicaciones en el eje Z. Es decir, puedes apilar tus elementos de vista uno encima del otro.

+2

también puede apilar en un RelativeLayout – NikkyD

0

RelativeLayout - Como su nombre sugiere en este grupo de vista, las vistas se colocan una con relación a la otra. La propiedad más utilizada de relativelayout se usa son

android:layout_toLeftOf="@id/some_view1" 
android:layout_toRightOf="@id/some_view2" 
android:layout_above="@id/some_view3" 
android:layout_below="@id/some_view4" 
android:layout_toendof="@id/some_view5" 
android:layout_tostartof="@id/some_view6" 

Las vistas se colocan una respecto de la otra. Es realmente útil mientras se desarrolla un diseño complejo.

FrameLayout - Se comporta como una vista de objeto único no se coloca en relación con cada uno sino según FrameLayout. FrameLayout toma el tamaño de la vista infantil más grande.

android:gravity="center_horizontal|center_vertical|bottom" 

El uso de la vista anterior de la vista infantil se modifica.

Cuestiones relacionadas