2012-07-31 4 views
16

Можно ли свернуть краны в Android? Предположим, у меня есть LinearLayout и добавьте три TextView s, каждый из которых имеет android:layout_margin10dp. Я получаю следующий результат:Свертывание полей в макетах Android

actual result

Однако, я хотел бы получить этот результат:

expected result

Я знаю, что я мог бы обойти это, установив различные верхние/нижние поля для различные предметы:

  • установить верхнее поле первого элемента и нижнее поле последнего элемента на 10dp,
  • установить remainding верхние/нижние края до 5 диоптрий,

но это делает конструкцию более сложной (особенно если 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> 
Смежные вопросы