2013-10-23 169 views
11

我正在動態創建包含LinearLayout的視圖並將它們添加到外部LinearLayout。我想在創建的視圖周圍設置邊距,但忽略XML文件中的layout_margin。它的工作原理是,如果我在代碼中設置參數,但我想在佈局XML中指定邊距。LinearLayout忽略邊距

設置在XML佈局保證金將被忽略:

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

設置保證金,同時創造榮幸:

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); 

這是外部的佈局。意見被添加到dealer_activity_product_list

<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

您是否嘗試過使用層次觀衆?或嘗試將視圖傾倒到uiautomator?有了這些工具,你可以檢查你的佈局。你能發佈你正在使用的完整代碼嗎? – Tobrun

+0

你能否發表更多的代碼?像完整的XML?我認爲你將保證金設置爲錯誤的項目 –

+0

我使用HierachyViewer來檢查佈局。雖然在代碼中設置邊距會反映在佈局的屬性中,但我找不到在XML文件中設置的值。 – multiholle

回答

-2

在外部視圖設置padding代替layout_margin

希望它會工作

+1

這將在外部視圖中包含的所有視圖周圍設置空格,但不包含在包含的視圖之間。 – multiholle

1

你設置屬性爲的LinearLayout或含有的LinearLayout的? 至少,下面做工作的LinearLayout裏面:

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

我確定作者爲外部佈局設置了邊距。 xmlns屬性只適用於根元素 –

+0

我設置另一個'LinearLayout'包含的'LinearLayout'屬性。 – multiholle

-1

有一個共同的「嵌套佈局」的格局。 也就是說,您將創建一個輔助容器佈局,並實現在容器佈局內定位內部佈局的所需效果。

排序:

<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

我的意思是,這正是我正在做的,它不工作。 – multiholle

+0

它是以編程方式添加到外部佈局的單一佈局還是兩個嵌套佈局? – 18446744073709551615

+0

我的意思是,我可以相信'android:layout_margin'對於作爲XML根目錄的佈局被忽略,但我不希望'android:layout_margin'對內部佈局正常工作(請檢查它是否在您的環境),除非此內部佈局的父級以編程方式添加到其父級。 – 18446744073709551615