Search code examples
androidandroid-constraintlayout

What is the difference between Start and Left in ConstraintLayout?


I know that Start = Left and End = Rignt in ConstraintLayout.

However, apart from this, what appears on the preview screen was slightly different.

When constraint is used as layout_constraintLeft_toLeftOf="parent" (and Right)

enter image description here

When constraint is used as layout_constraintStart_toStartOf="parent" (and End)

enter image description here

As you can see the difference in the image, when Left and Right are used, they are not completely attached to the parent, but are slightly apart. But Start and End are attached to parent.

Up until this point, I thought they were the same thing.

What is the difference between the two?

Currently, what I want to do is to attach only the first LinearLayout to the left in the first image. (Leave the positions of the second and third LinearLayout fixed)


XML

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="10dp"
        android:layout_marginVertical="8dp">
        <LinearLayout
            android:id="@+id/ll_set"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toLeftOf="@id/ll_weight"
            app:layout_constraintTop_toTopOf="parent">
            <TextView
                android:id="@+id/set"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="1"
                android:textSize="16dp" />
            <TextView
                android:id="@+id/unit_set"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="set"
                android:textSize="16dp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_weight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"

            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toRightOf="@+id/ll_set"
            app:layout_constraintRight_toLeftOf="@id/ll_rep">
            <EditText
                android:id="@+id/weight"
                android:layout_width="53dp"
                android:layout_height="wrap_content"
                android:inputType="numberDecimal"
                android:maxLength="5"
                android:textSize="16dp" />
            <TextView
                android:id="@+id/unit_kg"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="lb"
                android:textSize="16dp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_rep"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toRightOf="@id/ll_weight"
            app:layout_constraintRight_toRightOf="parent">
            <EditText
                android:id="@+id/rep"
                android:layout_width="55dp"
                android:layout_height="wrap_content"
                android:inputType="numberDecimal"
                android:maxLength="5"
                android:textSize="16dp" />

            <TextView
                android:id="@+id/unit_rep"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="rep"
                android:textSize="16dp" />
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

Solution

  • Your problem is you are using app:layout_constraintLeft_toLeftOf and app:layout_constraintRight_toLeftOf. If you want to change it you should change both of them to layout_constraintStart_toStartOf and layout_constraintEnd_toStartOf.

    You should use one of these combinations(left and right) or (start and end).

    You should not use app:layout_constraintStart_toStartOf with app:layout_constraintRight_toLeftOf

    Also, when you have to support RTL languages such as Arabic, the start!=left and end!=right