Is it advisable to use LinearLayout inside ConstraintLayout in Android?

TechBee picture TechBee · Aug 11, 2017 · Viewed 19.1k times · Source

I am new to ConstraintLayout in Android and newbie to Android too. I have a question. Is it advisable to use LinearLayout inside ConstraintLayout? For example:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns: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"
    app:srcCompat="@drawable/landing_screen"
    android:layout_height="match_parent"
    tools:context="com.braigolabs.braigo.landing.LandingActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:scaleType="centerCrop"
        app:srcCompat="@drawable/landing_screen"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintVertical_bias="1.0"
        app:layout_constraintHorizontal_bias="1.0"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        tools:layout_constraintBottom_creator="1"
        tools:layout_constraintLeft_creator="1"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="51dp">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="66dp"
            android:layout_marginStart="66dp"
            android:gravity="center"
            android:text="@string/login_welcome_braigolabs"                android:textAppearance="@style/TextAppearance.AppCompat.Large"
            tools:layout_editor_absoluteX="93dp"
            tools:layout_editor_absoluteY="403dp"/>

        <Button
            android:id="@+id/login_button"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:elevation="2dp"
            android:text="@string/login_login_button_title"
            android:textAllCaps="false"
            tools:layout_editor_absoluteX="116dp"
            tools:layout_editor_absoluteY="543dp"/>
    </LinearLayout>
</android.support.constraint.ConstraintLayout>

Also curious to know how popular is the ConstraintLayout among the developers?

Answer

Ben P. picture Ben P. · Aug 11, 2017

Is it advisable to use LinearLayout inside ConstraintLayout?

No... usually.

In general, the idea behind ConstraintLayout is that it allows you to position all of your children without having to nest any other ViewGroups inside the ConstraintLayout. As such, I would say that it is not advisable.

However, there are some things that a LinearLayout can do that a ConstraintLayout can't (mostly revolving around weighted spacing of views), and so if you need these particular corner cases in your layout, you won't have any option other than falling back to a LinearLayout.

how popular is the ConstraintLayout among the developers?

ConstraintLayout is relatively new, but it is quite powerful and certainly something that you ought to familiarize yourself with. It won't always be the perfect tool for the job at hand, but it will often allow you to easily create layouts you would otherwise spend hours on.

I can't speak to widespread adoption statistics, but I can say that I've seen tons of questions on this site about the correct usage of ConstraintLayout, so clearly devs around the world are starting to work with it.