2013-04-12 16 views
20

Mam żółte RelativeLayout zawierające wyższy czerwony LinearLayout.Nie można pobrać clipChildren = atrybut false do pracy

Aby cała LinearLayout widoczna, ustawić android:clipChildren="false", ale to nie działa zgodnie z oczekiwaniami:

<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> 
  • z android:clipChildren="true":

enter image description here

z czerwony LinearLayout przycięty zgodnie z oczekiwaniami

  • z android:clipChildren="false":

enter image description here

gdzie wysokość LinearLayout jest obcięty, a szerokość ustawione w układzie nie jest przestrzegana.

Co jest nie tak?

EDIT

Gdybym owinąć pojemnik w LinearLayout z obu wymiarach odpowiadających jego rodzica, otrzymuję ten sam rezultat (sprawdziłem, że pojemnik kontenera LinearLayout jest wypełnić cały ekran).

<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

Jeśli mogę umieścić atrybut w LinearLayout dominującej android:clipChildren="false", mam następujące:

enter image description here

+0

względny układ ma androida: layout_height = "44dp". sam jest obcięty przez jego rodzica – njzk2

+0

I ustawić ten układ bezpośrednio z setContentView (R.layout.test) ;. Nie ma wyraźnego rodzica. Czy główna grupa Viewgroup nie wypełnia całego ekranu? I dlaczego zmodyfikowano szerokość LinearLayout? – jul

+0

@ njzk2: aby wykonać więcej testów, wypróbowałem inny układ i nadal nie działa (zobacz moją edycję) – jul

Odpowiedz

13

ustawić także

android:clipToPadding="false" 

Obok:

android:clipChildren="false" 
46

android:clipChildren="false" pozwala każde dziecko rysować poza własnym granice, w obrębie rodzica. Nie pozwala dzieciom rysować poza samym rodzicem. W tym celu musisz ustawić android:clipChildren="false" na dziadku (również).

Myślę, że to, co widzisz z kolorami, to fakt, że kolory nie mają żadnych nieodłącznych granic. Jeśli nic ich nie przycina, to kolory na zawsze. Moja teoria mówi, że jeśli użyjesz, powiedzmy, rozciągniętego obrazu 1x1 px zamiast koloru, rzeczy będą inne.

Powiązane problemy