2012-07-31 17 views
16

È possibile comprimere i margini in Android? Diciamo che ho un LinearLayout e aggiungo tre TextView s, ognuno con un android:layout_margin di 10dp. Ottengo il seguente risultato:Margini compressi nei layout Android

actual result

Tuttavia, mi piacerebbe ottenere questo risultato:

expected result

So che avrei potuto risolvere questo impostando diversi top/margini inferiori per i diversi articoli:

  • impostare il margine superiore del primo elemento e il margine inferiore dell'ultimo elemento su 10 dpi,
  • impostare le remainding alto/margini inferiore a 5dp,

ma che rende il design più complicata (soprattutto se si creano dinamicamente i TextViews). C'è un modo per fare in modo che i margini si comportino come nei CSS? (Per una spiegazione del motivo per cui ciò ha senso, vedere: What is the point of CSS collapsing margins?)

risposta

14

Quello che faccio di solito per risolvere questo problema, è semplicemente tagliare il margine della vista (cioè il tuo TextView) a metà, e aggiungere lo stesso numero di padding a il ViewGroup contenente (cioè il tuo LinearLayout). In questo modo finirai con una spaziatura uniforme attorno a tutti gli oggetti. Ad esempio:

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