ConstraintLayout 约束太宽

ConstraintLayout constraints are too wide

我正在尝试更多地使用 ConstraintLayout,看看它在避免嵌套视图方面有多大用处。我在一个 FrameLayout 下面有两个 LinearLayouts,它们被限制为彼此的 top/bottom,像这样:

我限制了这两个(第二个限制在父底部),以便横向布局会相应调整。然而,这些线性布局之间的间隙太宽了,因为它散布在整个垂直视图中。有没有一种方法可以缩短这个差距,同时避免将它们嵌套到父 LinearLayout 中?

我的XML:

<LinearLayout
        android:id="@+id/dropbox_upload_btn"
        android:layout_width="306dp"
        android:layout_height="35dp"
        android:gravity="center"
        android:background="@android:color/background_light"
        app:layout_constraintBottom_toTopOf="@+id/box_upload_btn"
        app:layout_constraintTop_toBottomOf="@+id/imageFrameLayout"
        android:layout_marginLeft="45dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginRight="45dp"
        app:layout_constraintRight_toRightOf="parent"
        android:elevation="2dp"
        app:layout_constraintVertical_bias="0.22">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:src="@drawable/dropbox_android"
            android:layout_marginStart="15dp"
            android:layout_weight="0.35"/>

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/dropbox_upload"
            android:layout_weight="2.43"/>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/box_upload_btn"
        android:layout_width="306dp"
        android:layout_height="35dp"
        android:gravity="center"
        android:background="@android:color/background_light"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/dropbox_upload_btn"
        android:layout_marginLeft="45dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginRight="45dp"
        app:layout_constraintRight_toRightOf="parent"
        android:elevation="2dp"
        app:layout_constraintVertical_bias="0.076">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:src="@drawable/box_logo"
            android:layout_marginStart="15dp"
            android:layout_weight="0.35"/>

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/box_upload"
            android:layout_weight="2.43"/>

    </LinearLayout>

删除这些行。

app:layout_constraintBottom_toTopOf="@+id/box_upload_btn" app:layout_constraintTop_toBottomOf="@+id/dropbox_upload_btn"

然后尝试减少边距。

看起来您在垂直链中有这两个视图。此配置的默认值是 CHAIN_SPREAD 的链式样式,这会给您带来差距。将以下内容添加到链的顶视图。

layout_constraintVertical_chainStyle="CHAIN_PACKED"

然后您可以使用边距或垂直偏差来控制间距。

希望对您有所帮助。