2012-07-31 122 views
16

Android中的邊緣摺疊可能會崩潰嗎?假設我有一個LinearLayout並添加三個TextView s,每個都有android:layout_margin10dp。我得到以下結果:Android佈局中的摺疊邊距

actual result

不過,我想得到這樣的結果:

expected result

我知道我可以通過設置不同的上/下邊距解決此不同的項目:

  • 設置第一項的上邊距和最後一項的下邊距爲10dp,
  • 設置耳提面命頂部/底部邊距5DP,

但使得設計更加複雜(尤其是如果是動態創建的TextViews)。有什麼方法可以使邊界像CSS一樣運行? (爲了解釋爲什麼這是有道理的,請參閱:What is the point of CSS collapsing margins?

回答

14

我通常會自己解決這個問題,就是簡單地將View的(即TextView)邊距減半,然後將相同數字添加到填充包含ViewGroup(即您的LinearLayout)。這樣你將最終在所有物品之間均勻分佈空間。例如:

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