LinearLayout中元素之间间距的最佳实践

时间:2017-10-10 15:24:23

标签: android android-layout android-linearlayout

我创建了一个简单的LinearLayout,其中包含三个相同的元素:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Hello"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Hello"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Hello"/>
</LinearLayout>

现在我要在每对元素之间引入8dp空格。

以下哪种解决方案被认为更清洁?

enter image description here 要么: enter image description here

或者可能是其他人?

3 个答案:

答案 0 :(得分:4)

试试这个。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Hello" />

<android.support.v4.widget.Space
    android:layout_width="8dp"
    android:layout_height="wrap_content" />

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Hello" />

<android.support.v4.widget.Space
    android:layout_width="8dp"
    android:layout_height="wrap_content" />

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Hello" />
</LinearLayout>

为代码添加空间。

<android.support.v4.widget.Space
    android:layout_width="8dp"
    android:layout_height="wrap_content" />

答案 1 :(得分:1)

我喜欢已发布的Space解决方案,但我想在原始问题的精神中添加另一个答案。

在OP出现的情况下,如果我使用边距来完成此操作,我会在除第一个之外的每个元素上使用开始/左边距。我会这样做是因为我预测布局可能会在未来发生变化。在我看来,最可能发生的事情是在LinearLayout的末尾添加新元素或从LinearLayout的末尾删除元素。在这些情况下,如果我在每个项目上使用开始/左边距,我可以删除单个视图而无需触及其他视图。

答案 2 :(得分:0)

无论是给定的解决方案,您还可以使用LinearLayout

的可绘制分隔符
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showDividers="middle"
    android:divider="@drawable/divider8p"
    android:orientation="vertical">

    <!-- Your items here -->

</LinearLayout>

和分隔符声明:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#00FFFFFF"/>
    <size android:width="8dp" android:height="8dp"/>
</shape>