如何使用约束布局将内容连续对齐

时间:2020-05-10 07:44:00

标签: android android-layout android-constraintlayout

我在约束布局的工具布局上有些挣扎。

目前,我的布局是:

enter image description here

这就是我想要实现的目标,但是如何使这一行像一个“小组”一样?

例如,如果我添加此微调器,则我的所有布局都一团糟,我需要更改偏向来对齐事物,这不是一个好方法。

我的布局代码:

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:background="@android:color/white">

            <EditText
                android:id="@+id/editText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginEnd="8dp"
                android:ems="10"

                android:inputType="textPersonName"
                android:text="Name"
                app:layout_constraintBottom_toTopOf="@+id/spinner3"
                app:layout_constraintEnd_toStartOf="@+id/from_image_view"
                app:layout_constraintHorizontal_chainStyle="packed"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.415" />

            <ImageView
                android:id="@+id/from_image_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="8dp"
                app:layout_constraintBottom_toTopOf="@id/from_text_view"
                app:layout_constraintEnd_toStartOf="@+id/to_image_view"
                app:layout_constraintStart_toEndOf="@+id/editText"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.25"
                app:layout_constraintVertical_chainStyle="packed"
                app:srcCompat="@drawable/ic_calendar_right" />

            <ImageView
                android:id="@+id/to_image_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginEnd="16dp"
                app:layout_constraintBottom_toTopOf="@id/to_text_view"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/from_image_view"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.25"
                app:layout_constraintVertical_chainStyle="packed"
                app:srcCompat="@drawable/ic_calendar_right" />

            <TextView
                android:id="@+id/from_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="1dp"
                android:text="From"
                android:textSize="18sp"
                app:layout_constraintBottom_toTopOf="@id/spinner3"
                app:layout_constraintStart_toStartOf="@+id/from_image_view"
                app:layout_constraintTop_toBottomOf="@+id/from_image_view" />

            <TextView
                android:id="@+id/to_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="46dp"
                android:text="To"
                android:textSize="18sp"
                app:layout_constraintBottom_toTopOf="@id/spinner3"
                app:layout_constraintStart_toStartOf="@+id/to_image_view"
                app:layout_constraintTop_toBottomOf="@+id/to_image_view" />

            <Spinner
                android:id="@+id/spinner3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                tools:layout_editor_absoluteX="23dp"
                tools:layout_editor_absoluteY="136dp"
                tools:listitem="@android:layout/simple_list_item_1" />

        </androidx.constraintlayout.widget.ConstraintLayout>

1 个答案:

答案 0 :(得分:1)

在imageview和text视图的顶部添加约束以编辑文本

app:layout_constraintBottom_toBottomOf="@id/from_text_view"
app:layout_constraintTop_toTopOf="@id/from_image_view"

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="8dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name"
    app:layout_constraintBottom_toBottomOf="@id/from_text_view"
    app:layout_constraintTop_toTopOf="@id/from_image_view"
    app:layout_constraintEnd_toStartOf="@+id/from_image_view"
    app:layout_constraintHorizontal_chainStyle="packed"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintVertical_bias="0.415" />

并为微调框添加开始编辑文本

app:layout_constraintStart_toStartOf="@id/editText"

,便于在属性app:layout_constraintBottom_toBottomOf中引用constraintBottom,用于当前视图的底部,而toBottomOf是引用视图底部的ID。 例如,在您的旋转器视图中,app:layout_constraintStart_toStartOf="@id/editText"中的constraintStart表示旋转器视图的开始,并且toStartOf与edittext视图的开始对齐。