2012-07-31 22 views
16

¿Es posible hacer que los márgenes colapsen en Android? Digamos que tengo un LinearLayout y agrego tres TextView s, cada uno con un android:layout_margin de 10dp. Me sale el siguiente resultado:Colapsando los márgenes en los diseños de Android

actual result

Sin embargo, me gustaría conseguir este resultado:

expected result

Yo sé que podría solucionar esto estableciendo diferentes márgenes superiores/inferiores para los diferentes elementos:

  • establecen el margen superior del primer elemento y el margen inferior del último elemento en 10dp,
  • establecer los mejores cruceta márgenes/inferior a 5 dp,

pero que hace el diseño más complicado (especialmente si los TextViews se crean dinámicamente). ¿Hay alguna forma de hacer que los márgenes se comporten como en CSS? (Para obtener una explicación de por qué esto tiene sentido, consulte: What is the point of CSS collapsing margins?)

Respuesta

14

Lo que suelo hacer para solucionar esto, es simplemente cortar el margen de la Vista (es decir, su TextView) por la mitad, y agregar ese mismo número como relleno a el ViewGroup que lo contiene (es decir, su LinearLayout). De esta forma terminarás con espaciado parejo alrededor de todos los artículos. Por ejemplo:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="5dip" 
    > 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dip" 
     android:text="I'm a TextView!" 
     /> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dip" 
     android:text="I'm a TextView!" 
     /> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dip" 
     android:text="I'm a TextView!" 
     /> 
</LinearLayout> 
Cuestiones relacionadas