Свертывание полей в макетах Android

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

actual result

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

expected result

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

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

но это делает проект более сложным (особенно если TextViews динамически создается). Есть ли способ заставить поля действовать как в CSS? (Чтобы объяснить, почему это имеет смысл, см. В чем смысл разворачивания полей CSS?)

Ответы

Ответ 1

То, что я обычно делаю, чтобы исправить это сам, состоит в том, чтобы просто сократить поле "Вид" (т.е. ваш 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>