Margen ignorado por LinearLayout

Estoy creando dinámicamente las vistas que contienen un LinearLayout y las agrego a un LinearLayout externo. Me gustaría establecer un margen alrededor de las vistas creadas, pero el layout_margin en el archivo XML es ignorado. Funciona, si establezco los parámetros en el código, pero me gustaría especificar el margen en la disposición XML.

La configuración del margen en el diseño XML se ignorará:

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

Establecer el margen durante la creación se cumple:

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

Este es el diseño exterior. Las vistas se agregan a 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> 

¿Está configurando el atributo para el LinearLayout interno o el LinearLayout que contiene ? Al menos, lo siguiente funciona dentro de un LinearLayout:

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

Hay un patrón común de "diseños anidados". Es decir, se crea un diseño de contenedor auxiliar y se consigue el efecto deseado que posiciona el diseño interno dentro del diseño del contenedor.

Tipo de:

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

Set padding lugar de layout_margin en vista exterior.

Espero que funcione

  • ¿Cómo agregar un simple encabezado 8dp / pie de página a RecyclerView de Android?
  • Margen inferior o relleno no funciona en el diseño relativo en xml en android
  • Cambiar margen de un diseño mediante XML en la lista de capas
  • Margen de visión establecido para Android por programación
  • Centrar elementos en un RecyclerView cuando se implementa con GridLayoutManager
  • Los márgenes LinearLayout, RelativeLayout, etc. no funcionan como se esperaba
  • Tratando de entender los márgenes en LinearLayout dentro de ScrollView
  • SlidingTabLayout margen izquierdo y derecho
  • Programaticamente margen / relleno de textview en un listview
  • Peso de Android con márgenes y rellenos
  • Cómo eliminar el relleno de Android CheckBox
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.