2013-10-23 16 views
11

Ich erstelle dynamische Ansichten mit einem LinearLayout und füge sie zu einem äußeren LinearLayout hinzu. Ich möchte einen Rand um die erstellten Ansichten legen, aber die layout_margin in der XML-Datei wird ignoriert. Es funktioniert, wenn ich die Parameter im Code setze, aber ich möchte den Rand in der Layout-XML angeben.Von LinearLayout ignorierter Rand

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="20dp" 
    android:orientation="vertical" > 

    ... 
</LinearLayout> 

den Rand einstellen, während fühlt sich geehrt, die Schaffung:

die Marge in der XML-Layout Einstellung wird ignoriert

LinearLayout productView = (LinearLayout) getLayoutInflater().inflate(R.layout.product_preview, null); 

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
params.setMargins(50, 50, 50, 50); 
productView.setLayoutParams(params); 

Dies ist die äußere Layout. Die Ansichten werden zu dealer_activity_product_list hinzugefügt.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/dealer_activity_dealer_image" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:contentDescription="@string/dealer_activity_dealer_image_desc" /> 

    <TextView 
     android:id="@+id/dealer_activity_dealer_address" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:id="@+id/dealer_activity_product_list1" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:orientation="vertical" /> 

     <LinearLayout 
      android:id="@+id/dealer_activity_product_list2" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:orientation="vertical" /> 
    </LinearLayout> 
</LinearLayout> 

+0

Haben Sie versucht Hierarchy-Viewer? oder versucht, die Ansicht zu uiautomator zu entleeren? Mit diesen Tools können Sie Ihre Layouts überprüfen. Können Sie den vollständigen Code posten, den Sie verwenden? – Tobrun

+0

Könnten Sie bitte mehr Code posten? Wie vollständiges XML? Ich denke, dass Sie Marge auf falsches Element setzen –

+0

Ich habe HierachyViewer verwendet, um das Layout zu überprüfen. Während sich der Rand im Code in den Attributen des Layouts widerspiegelt, kann ich die in der XML-Datei festgelegten Werte nicht finden. – multiholle

Antwort

-2

gesetzt padding anstelle von layout_margin in Außenansicht.

Hoffe, dass es funktionieren wird

+1

Dies würde einen Bereich um alle Ansichten in der äußeren Ansicht festlegen, aber nicht zwischen den enthaltenen Ansichten. – multiholle

1

Sind Sie das Attribut für die inneren Linearlayout Einstellung oder der enthält Linearlayout? Zumindest führt folgende Arbeiten in einem Linearlayout:

<TextView 
    android:id="@+id/xxx" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    android:layout_margin="10dp" 
    /> 
+0

Ich bin sicher, dass der Autor Rand für äußere Layouts setzt. xmlns-Attribut ist nur für root-Elemente geeignet –

+0

Ich setze das Attribut für ein 'LinearLayout', das von einem anderen' LinearLayout' enthalten ist. – multiholle

-1

Es gibt ein gemeinsames „verschachtelte Layouts“ Muster ist. Das heißt, Sie erstellen ein Hilfscontainerlayout und erreichen den gewünschten Effekt, indem Sie das interne Layout innerhalb des Containerlayouts positionieren.

Sortieren von:

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

    <LinearLayout 
     ... 
     android:layout_margin="20dp" 
     > 
    ... 
    </LinearLayout> 
</LinearLayout> 
+0

Ich meine, genau das mache ich und es funktioniert nicht. – multiholle

+0

Ist es ein einzelnes Layout oder zwei verschachtelte Layouts, die Sie dem äußeren Layout programmatisch hinzufügen? – 18446744073709551615

+0

Ich meine, ich glaube, dass 'android: layout_margin' für das Layout ignoriert wird, das die Wurzel des XML ist, aber ich würde nicht erwarten, dass' android: layout_margin' normal für interne Layouts funktioniert (bitte prüfen, ob es in Ihrem Umgebung), es sei denn, das übergeordnete Element dieses internen Layouts wurde programmatisch zu seinem übergeordneten Element hinzugefügt. – 18446744073709551615