2012-10-17 7 views
8

Ich habe eine RelativeLayout mit einigen Sachen drin, und ich möchte eine Hintergrundansicht, um die ganze Sache zu füllen. Dies ist, was ich erwarten würde zu arbeiten:Wie kann ich mit `View` ein` RelativeLayout` füllen?

 <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. 

Das funktioniert nicht. Es füllt die Breite, aber die Höhe wird auf Null gesetzt. Wenn ich jedoch layout_alignParentBottom zu layout_alignBottom="@+id/im" ändere, dann funktioniert es funktioniert (Art; das ist keine zufriedenstellende Lösung, aber zumindest ist es nicht mehr 0 Höhe).

Was ist los? Ist das ein Fehler?

Antwort

2

Versuchen Sie, die layout_height Eigenschaft Sie relatives Layout match_parent

Und was Einstellung geschieht, wenn Sie all alignParent Eigenschaften aus der Ansicht entfernen und nur match_parent für die Breite und die Höhe der Ansicht benutzen?

Rolf

Finale bearbeiten ?:

Kleines Beispiel, so etwas wie das? Verwenden eines Containers? Wenn der Inhalt des inneren RelativeLayout wächst, dehnt sich die Ansicht einfach mit.

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

Der Typ der 'layout_height' von' RelativeLayout' wirkt sich nicht auf alle untergeordneten Elemente aus. Ich meine, es ist schon eine Höhe, die nicht Null ist, also sollte 'match_parent' in den Kindern * es füllen *. Und leider habe ich schon deinen zweiten Vorschlag ausprobiert. Keine Freude. – Timmmm

+0

Re Ihre Bearbeitung: Ja, das ist, wie mein Code derzeit aussieht, und ist das Beste, was ich habe, aber es ist nicht die Lösung, nach der ich suche. Wenn Sie dem 'RelativeLayout' weitere Ansichten hinzufügen, so dass sie größer werden, wird der Hintergrund' View' nicht mehr gefüllt. – Timmmm

+0

Bearbeitete meinen Post, jetzt verwende ich einen Container, um das gewünschte Verhalten zu erhalten. –

2

Sie benötigen das relative Layout von

android:layout_height="wrap_content" 

zu

android:layout_height="match_parent" 

zu ändern, weil Sie die Höhe der übergeordneten Prozess wickeln, und das Kind der Eltern entsprechen es wird 0 kommen.

Wenn Sie andere Dinge über/unter dem relativen Layout haben wollen, th Verwenden Sie Android-Gewichte.

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

So funktioniert 'match_parent' nicht. Und ich möchte auch nicht, dass mein 'RelativeLayout' seine Eltern füllt oder erweiterbar ist. – Timmmm

+0

@Timmmm So machen Sie das nicht sichtbar? – Doomsknight

+0

Nein. Tatsächlich hat 'layout_height = "match_parent" 'in einem vertikalen' LinearLayout' (in dem es sich befindet) keine Wirkung. Ich denke, das LinearLayout ignoriert das, weil es keinen Sinn ergibt. – Timmmm

Verwandte Themen