2012-07-23 8 views
6

Ich bin neu in Android-Programmierung, aber von wie viel ich von den Layouts aus der documentation verstanden habe, RelativeLayout wird meistens verwendet, wenn Sie die Ansichten basierend auf einigen Regeln und das FrameLayout benötigen, wenn Sie Ansichten überlappen möchten.Unterschied zwischen Frame und Relative Layout?

Aber leider für das folgende Programm bekomme ich die Arbeit von FrameLayout mit RelativeLayout getan. Ich habe meine Arbeit erledigt, aber um zu verstehen, vermisse ich etwas in dem Unterschied? Wie kamen die Tasten über mein Bild? (. Auch das andere Bild überlappt)

<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

Antwort

16

Die RelativeLayout können verwendet werden:

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

, um sicherzustellen, Ansichten Aufstellung korrekt in Bezug zueinander. FrameLayout ist sehr ähnlich, außer dass es nur die Schwerkraft verwendet, um seine Ansichten anzuzeigen (ohne Beziehung).

Ich würde Ihnen auch empfehlen, einen Blick auf die ConstraintLayout-Komponente zu werfen. Mit ConstraintLayout können Sie große und komplexe Layouts mit einer flachen Ansichtshierarchie erstellen (keine verschachtelten Ansichtsgruppen). Es ist ähnlich wie RelativeLayout, da alle Ansichten entsprechend den Beziehungen zwischen den gleichrangigen Ansichten und dem übergeordneten Layout angeordnet sind, aber flexibler als RelativeLayout und einfacher mit dem Layout-Editor von Android Studio zu verwenden sind.

8

RelativeLayout basierend auf dem Verhältnis der Ansichten. Es ist ein Layout-Manager, mit dem Sie Ihre UI-Elemente basierend auf einer Regel ordnen können. Sie können Folgendes festlegen: Ausrichtung an den linken Rand der Eltern, Platzierung nach links oder rechts von diesen Elementen etc.

FrameLayout ermöglicht Platzierungen entlang der Z-Achse. Das heißt, Sie können Ihre Ansichtselemente übereinander stapeln.

+2

Sie können auch in einem RelativeLayout stapeln – NikkyD

0

RelativeLayout - Wie der Name in dieser Viewgroup andeutet, werden Views relativ zueinander platziert. Die am häufigsten verwendeten Eigenschaften der relativen Layouts sind

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" 

Ansicht sind relativ zueinander platziert. Es ist sehr hilfreich beim Entwickeln von komplexen Designs.

FrameLayout - Es verhält sich wie eine einzelne Objektansicht werden nicht relativ zu jedem einzelnen aber nach dem FrameLayout platziert. FrameLayout verwendet die Größe der größten untergeordneten Ansicht.

Mit der obigen Eigenschaft wird die Position der untergeordneten Ansichten geändert.