2013-04-12 17 views
20

Ho un colore giallo RelativeLayout contenente un rosso più alto LinearLayout.Impossibile ottenere clipChildren = falso attributo per funzionare

Al fine di rendere l'intero LinearLayout visibile, ho impostato android:clipChildren="false", ma questo non funziona come previsto:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="44dp" 
    android:background="#FFFF00" 
    android:clipChildren="false" > 

    <LinearLayout 
     android:layout_width="50dp" 
     android:layout_height="100dp" 
     android:background="#FF0000" 
     android:orientation="vertical" > 

    </LinearLayout> 

</RelativeLayout> 
  • con android:clipChildren="true":

enter image description here

con la rosso LinearLayout tagliato come previsto

  • con android:clipChildren="false":

enter image description here

dove l'altezza LinearLayout è tagliato, e la larghezza impostata nel layout non è rispettata.

Cosa c'è che non va?

EDIT

Se mi avvolgo il contenitore in un LinearLayout con entrambe le dimensioni corrispondenti suo genitore, ottengo lo stesso risultato (ho controllato che il contenitore del contenitore LinearLayout riempire l'intero schermo).

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

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="44dp" 
     android:background="#FFFF00" 
     android:clipChildren="false" > 

     <LinearLayout 
      android:layout_width="50dp" 
      android:layout_height="100dp" 
      android:background="#FF0000" 
      android:orientation="vertical" > 
     </LinearLayout> 
    </RelativeLayout> 

</LinearLayout> 

EDIT 2

Se metto l'attributo android:clipChildren="false" nel LinearLayout genitore, ottengo il seguente:

enter image description here

+0

la disposizione relativa ha android: layout_height = "44dp". è a sua volta bloccato dal suo genitore – njzk2

+0

Ho impostato questo layout direttamente con setContentView (R.layout.test) ;. Non esiste un genitore esplicito. Il Viewgroup di root non riempie l'intero schermo? E perché la larghezza del LinearLayout è stata modificata? – jul

+0

@ njzk2: per fare più test, ho provato un layout diverso, e ancora non funziona (vedi la mia modifica) – jul

risposta

13

impostare anche

android:clipToPadding="false" 

Accanto:

android:clipChildren="false" 
46

android:clipChildren="false" permette ad ogni bambino di disegnare al di fuori della propria limiti, all'interno del genitore. Non consente ai bambini di disegnare al di fuori del genitore stesso. Per questo è necessario impostare android:clipChildren="false" sul nonno (come pure).

Penso che quello che stai vedendo con i colori è solo perché i colori non hanno limiti intrinseci. Se non c'è nulla che li ritaglia, i colori vanno per sempre. La mia teoria è che se si usasse, per esempio, un'immagine allungata di 1x1 px invece di un colore, le cose sarebbero diverse.

Problemi correlati