2012-10-17 14 views
8

Mam RelativeLayout z pewnymi rzeczami w nim i chcę widok w tle wypełnić całą rzecz. To, czego można oczekiwać, aby pracować:Jak mogę zrobić "Widok" wypełnić "RelativeLayout"?

 <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#000" > 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentBottom="true" 
       android:layout_margin="1px" 
       android:background="#fafafa" /> 

      <ImageView 
       android:id="@+id/im" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/ic_blank_profile" /> 

     .... and so on. 

To nie działa. Wypełnia szerokość, ale wysokość zostaje ustawiona na zero. Jednakże, jeśli zmienię layout_alignParentBottom na layout_alignBottom="@+id/im", to działa (rodzaj, to nie jest satysfakcjonujące rozwiązanie, ale przynajmniej nie ma już 0 wzrostu).

Co się dzieje? Czy to błąd?

Odpowiedz

2

Spróbuj ustawić właściwość layout_height was układu względem match_parent

i co się dzieje, jeśli usunąć wszystkie alignParent właściwości z widoku i po prostu użyć match_parent dla szerokości i wysokości widoku?

Rolf

Finał Edit ?:

Mały przykład coś takiego? Korzystanie z pojemnika? Gdy zawartość wewnętrznego RelativeLayout rośnie, Widok będzie po prostu rozciągał się wraz z nim.

<?xml version="1.0" encoding="utf-8"?> 
<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" 
    android:orientation="vertical" > 


    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 


     <View 
      android:id="@+id/view1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignBottom="@+id/relativeLayout1" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_margin="1px" 
      android:background="#fafafa" /> 

     <RelativeLayout 
      android:id="@+id/relativeLayout1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <ImageView 
       android:id="@+id/im" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/ic_blank_profile" /> 
     </RelativeLayout> 
    </RelativeLayout> 

</LinearLayout> 
+0

Typem 'layout_height' z' RelativeLayout' nie wpłynie żaden z jej dzieci. Mam na myśli, że jest to już niezerowa wysokość, więc 'match_parent' u dzieci * powinno * wypełnić to. I niestety już wypróbowałem twoją drugą sugestię. Brak przyjemności. – Timmmm

+0

Ponownie edytuj: Tak właśnie wygląda mój kod i jest najlepszy, jaki mam, ale nie jest to rozwiązanie, którego szukam. Jeśli dodasz inne widoki do 'RelativeLayout', aby był większy, tło' Widok' nie będzie już go wypełniało. – Timmmm

+0

Edytowałem mój wpis, teraz używam kontenera, aby uzyskać pożądane zachowanie. –

2

Musisz zmienić względny układ z

android:layout_height="wrap_content" 

do

android:layout_height="match_parent" 

Ponieważ jesteś owijania wysokości rodzica do dziecka, a dziecko, aby dopasować rodzica , pojawi się 0.

jeśli chcesz mieć inne rzeczy powyżej/poniżej względnego układu, pl używaj wag androida.

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0px" <!-- or 0dip --> 
     android:layout_weight="1" 
     android:background="#000" > 
+0

To nie działa jak "match_parent". A także nie chcę, aby mój "RelativeLayout" wypełniał rodzica lub był rozszerzalny. – Timmmm

+0

@ Timmmm Czy wykonanie któregokolwiek z nich nie czyni go widocznym? – Doomsknight

+0

Nie. W rzeczywistości ustawienie 'layout_height =" match_parent "' w pionowym 'LinearLayout' (w którym jest) nie ma żadnego efektu. Myślę, że "LinearLayout" to ignoruje, ponieważ nie ma sensu. – Timmmm