2012-05-03 7 views
17

È una domanda sui layout di Android. Ecco quello che ho avidamente voglio ottenere:Esistono modi per mettere leggermente la vista fuori dal layout principale?

Layout

grigio scuro è un LinearLayout. Arancione è il layout X e quindi Verde è un FrameLayout. Devo mettere Green al di fuori del suo genitore - layout X. La gerarchia del layout descritta non può essere modificata. L'unica opzione è il layout X - potrebbe essere quello che vuoi.

Qualche idea?

+0

Odio dirlo, ma l'unico modo in cui riesco a pensare è usare un FrameLayout per avvolgere tutto, avere il grigio scuro e l'arancione in un layout lineare e quindi sovrapporre il layout verde agli altri. Che è in conflitto con il tuo "La gerarchia del layout descritta non può essere modificata". Solo per curiosità, perché non è possibile? – Barak

+0

Penso che sia possibile specificare valori negativi per i margini. Hai provato? Penso che funzioni per i layout in cui è possibile sovrapporre (ad esempio due oggetti su una tela). Non sono vicino a nessun editor, altrimenti lo proverei anch'io. So per certo che puoi sovrapporsi se l'intero layout è una tela, ma non sono sicuro della tua situazione. – Gophermofur

+0

@Barak: Fondamentalmente è una tabella (la riga della tabella è sull'immagine) e in alcune circostanze ho bisogno di spostare una singola cella al di fuori della sua posizione normale, quindi i layout Table/TableRow sono l'unico che posso usare. – agibalov

risposta

4

Non è possibile inserire la parte Verde in Layout X, perché non può essere disegnata all'esterno dei suoi genitori.

Pertanto, è necessario implementare RelativeLayout o FrameLayout (layout radice) come genitori di tutte queste viste.

E Metti la vista verde come childView del layout di root.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="200dp" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/layout_dark_grey" 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_orange" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toRightOf="@id/layout_dark_grey" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/layout_green" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="300dp" > 
    </RelativeLayout> 

</RelativeLayout> 
+0

So che ci sono modi per realizzarlo usando layout più appropriati invece di quelli che uso. Sono ancora curioso di sapere se c'è un modo per farlo nel mio caso. – agibalov

29

Usa -

android:clipChildren="false" 
android:clipToPadding="false" 

a tutti i genitori della vista del bambino, 'margine sinistro', allora si mette di immagine per essere negativo, che metterà la visualizzazione bambino al di fuori della vista primaria e volontà nemmeno tagliare la vista.

+1

Il margine negativo è il vincitore! – hellaandrew

+2

Spot on! Cheers – AhmedW

+3

Non sembra funzionare per me – Denny

Problemi correlati