Skip to content Skip to sidebar Skip to footer

Constraintlayout Relative Distance In Percentage %

I am working with ConstraintLayout and I want to set a percentage margin top to the Textview Sample from the Button 2 placed at 52% of the screen. 3% is of course compared to the h

Solution 1:

After some research I finally found a workaround.

With the beta version of the ConstraintLayoutLibrary 1.1.0-beta you can define the height in a percent mode.

    app:layout_constraintHeight_default="percent"
    app:layout_constraintHeight_percent="0.03"

So I created an empty view for create space. Anyway, there isn't yet a method to define the marginTop in percent mode.

So for my specific case:

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.constraint.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.5" /><Buttonandroid:id="@+id/button3"android:layout_width="0dp"android:layout_height="0dp"android:layout_marginBottom="8dp"android:layout_marginTop="8dp"android:text="Button"app:layout_constraintBottom_toTopOf="@+id/guideline"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="0dp"android:layout_marginEnd="8dp"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:layout_weight="10"android:background="#00FF00"android:text="SAMPLE"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/spaceView" /><Viewandroid:id="@+id/spaceView"android:layout_width="0dp"android:layout_marginEnd="8dp"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:background="#FF0000"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHeight_percent="0.03"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button4" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_marginTop="8dp"android:text="BUTTON 2"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline" /></android.support.constraint.ConstraintLayout>

Solution 2:

I copied your code and added a guideline and used it inside the TextView

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.constraint.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.5" /><android.support.constraint.Guidelineandroid:id="@+id/text_view_guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.53" /><Buttonandroid:id="@+id/button3"android:layout_width="0dp"android:layout_height="0dp"android:layout_marginBottom="8dp"android:layout_marginTop="8dp"android:text="Button"app:layout_constraintBottom_toTopOf="@+id/guideline"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="0dp"android:layout_marginEnd="8dp"android:layout_marginStart="8dp"android:layout_marginTop="32dp"android:layout_weight="10"android:background="#00FF00"android:text="SAMPLE"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button3"app:layout_constraintTop_toTopOf="@+id/text_view_guideline" /></android.support.constraint.ConstraintLayout>

Solution 3:

You can do this without guide line. Just make sure to set the child of the ConstraintLayout to hold:

app:layout_constraintVertical_bias="0.52"app:layout_constraintHeight_default="wrap"

For example, we can place a self sized container in screen location of 0.52 vertically:

<androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/content_view"android:layout_width="match_parent"android:layout_height="0dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintTop_toTopOf="parent"><androidx.appcompat.widget.LinearLayoutCompatandroid:layout_width="match_parent"android:layout_height="0dp"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintVertical_bias="0.52"app:layout_constraintHeight_default="wrap"
            ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="some text"/></androidx.constraintlayout.widget.ConstraintLayout>

Post a Comment for "Constraintlayout Relative Distance In Percentage %"