2012-07-23 18 views
6

Sono nuovo per la programmazione Android ma da quanto ho capito dei layout dallo documentation, RelativeLayout viene utilizzato principalmente quando sono necessarie le viste basate su alcune regole e il FrameLayout quando si desidera sovrapporre le viste.Differenza tra il frame e il layout relativo?

Ma sfortunatamente per il seguente programma ottengo il lavoro di FrameLayout eseguito utilizzando RelativeLayout. Ho fatto il mio lavoro ma per capire, mi manca qualcosa nella differenza? Inoltre, come sono arrivati ​​i pulsanti sulla mia immagine? (. Anche l'altra immagine si sovrappone)

<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

risposta

16

Il RelativeLayout può usare:

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

per assicurarsi vista scaletta correttamente in relazione tra loro. FrameLayout è molto simile, tranne che è solo utilizzando la gravità per mettere in mostra le sue visualizzazioni (senza alcuna relazione).

Vorrei anche suggerire di dare un'occhiata al componente ConstraintLayout. ConstraintLayout consente di creare layout grandi e complessi con una gerarchia di viste piatte (nessun gruppo di viste nidificate). È simile a RelativeLayout in quanto tutte le visualizzazioni sono disposte in base alle relazioni tra le visualizzazioni di pari livello e il layout principale, ma è più flessibile di RelativeLayout e più facile da utilizzare con l'Editor di layout di Android Studio.

8

RelativeLayout basato sulla relazione delle viste. È un gestore di layout che ti aiuta a organizzare gli elementi dell'interfaccia utente in base ad alcune regole. È possibile specificare cose come: allineare questo al bordo sinistro dei genitori, posizionarlo a sinistra/destra di questi elementi ecc.

FrameLayout consente posizionamenti lungo l'asse Z. Questo è possibile impilare gli elementi di visualizzazione uno sopra l'altro.

+2

puoi anche impilare in un RelativeLayout – NikkyD

0

RelativeLayout - Come suggerisce il nome in questo gruppo di vista, le viste sono posizionate l'una rispetto all'altra. Le proprietà più utilizzate di relativelayout sono utilizzate sono

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" 

Le viste sono posizionate l'una rispetto all'altra. È davvero utile durante lo sviluppo di progetti complessi.

FrameLayout - Si comporta come una vista a oggetto singolo non posizionata rispetto a ciascuna, ma come a FrameLayout. FrameLayout prende la dimensione della visualizzazione figlio più grande.

android:gravity="center_horizontal|center_vertical|bottom" 

L'utilizzo della posizione di visualizzazione figlio di proprietà precedente viene modificato.

Problemi correlati