2013-08-26 15 views
11

Ecco una foto in modo da poter capire quello che voglio:Come allineare un elemento al centro e sopra un altro elemento nel relativo layout?

enter image description here

ho questo elemento verde già istituito nel mio layout relativo, e quello che voglio è quello di mettere un altro elemento (quello nero nella foto) sopra di esso in modo che venga centrato esattamente nel mezzo dell'elemento verde.

Ricordare che l'elemento nero non ha una larghezza costante ed è più largo di quello verde.

Ci sono cose come Android: layout_alignLeft e android: layout_alignRight che sarebbe utile se lo volessi allineato a sinistra oa destra, ma per quanto ne so non c'è Android: layout_alignCenter quindi non so come fare cosa ...

+0

possibile duplicato del [alignCenter layout relativa Android da un'altra vista] (http://stackoverflow.com/questions/5487864/android-relative-layout-aligncenter-from -un'altra-vista) – tir38

risposta

17

Come hai detto tu stesso, inserisci entrambi gli elementi all'interno di un RelativeLayout.

Quindi, impostare il "center_horizontal" di proprietà di entrambi gli elementi alla vera, e quindi impostare il "sotto" proprietà dell'elemento verde per l'id dell'elemento nero.

Ecco l'esempio completo:

<?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" > 

    <View 
     android:id="@+id/view1" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:background="@color/Black" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view2" 
     android:layout_height="100dp" 
     android:layout_below="@+id/view1" 
     android:background="@color/Green" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

("center_vertical" è un pò opzionale)

O qui, indipendentemente l'altra posizione Visualizzazioni:

<?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" > 

    <View 
     android:id="@+id/view1" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:background="@color/Black" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view2" 
     android:layout_width="40dp" 
     android:layout_height="100dp" 
     android:layout_below="@+id/view1" 
     android:layout_alignLeft="@+id/view1" 
     android:layout_alignRight="@+id/view1" 
     android:layout_marginLeft="30dp" 
     android:layout_marginRight="30dp" 
     android:background="@color/Green" /> 

</RelativeLayout> 

(In In questo caso, i margini definiranno la larghezza della seconda vista)

Questo è il risultato finale:

enter image description here

+1

La cosa è che center_horizontal centra gli elementi relativi al loro genitore. E non voglio che siano al centro del genitore, voglio solo allineare l'elemento nero per essere al centro dell'elemento verde, indipendentemente dalla loro posizione nel genitore. –

+2

Ho aggiornato la mia risposta :) –

+0

Allineare al momento a destra e sinistra di smthng è davvero eccezionale, grazie – OFFmind

Problemi correlati