Jonny
Jonny

Reputation: 297

How to align content in a row using constrain layout

I'm a little bit struggling with implement layouts with constrain layout.

Currently I've this layout:

enter image description here

And it's what I wanted to acheive, but How can I make this row act like a "group"?

If I add this spinner for example, all my layout is a mess and I need change bias to align things and it's not good approach.

my layout code:

        <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>

Upvotes: 0

Views: 145

Answers (1)

Upendra Shah
Upendra Shah

Reputation: 2301

Add constraint top of imageview and text view to edit 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" />

and for spinner add start of edit text

app:layout_constraintStart_toStartOf="@id/editText"

for easy reference app:layout_constraintBottom_toBottomOf in this attribute constraintBottom for current view's bottom and toBottomOf is the id of reference view's bottom. For example in your spinner view app:layout_constraintStart_toStartOf="@id/editText" in constraintStart mean start of spinner view and toStartOf is align with start of edittext view.

Upvotes: 1

Related Questions