Search code examples
androidandroid-constraintlayoutandroid-framelayout

FrameLayout wrap_content in ConstraintLayout


My FrameLayout inside a CoordinatorLayout doesn't want to be wrap_content. When I select wrap_content with the ui tool it does not set it to wrap_content but set a defined height of 48dp.

I also tried to set it directly in the xml file and it works... Until I reopen the file. I suppose AS's editor is doing some work and reset its height to 48dp.

This is how my layout looks like :

<layout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <import type="android.view.View" />
        <variable
            name="viewModel"
            type="com.mydomain.relationViewModel" />

    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            android:layout_centerInParent="true"

            android:visibility="@{viewModel.isLoading() ? View.VISIBLE : View.GONE}"/>

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="@{viewModel.isLoading() ? View.INVISIBLE : View.VISIBLE}">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:id="@+id/hint"
                tools:text="Relation"
                android:layout_marginStart="16dp"
                app:layout_constraintLeft_toLeftOf="parent"
                android:layout_marginLeft="16dp"
                android:text="@string/relationship_spinner_hint"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="@+id/spinner" />

            <Spinner
                android:layout_width="0dp"
                android:layout_height="48dp"
                android:id="@+id/spinner"
                android:dropDownWidth="match_parent"
                android:layout_marginEnd="16dp"
                app:layout_constraintRight_toRightOf="parent"
                android:layout_marginRight="16dp"
                app:layout_constraintLeft_toRightOf="@+id/hint"
                android:layout_marginStart="16dp"
                android:layout_marginLeft="16dp"
                android:layout_marginTop="16dp"
                app:layout_constraintTop_toTopOf="parent"

                app:setOnItemSelectedListener="@{viewModel.relationshipsListener}"/>

            <FrameLayout
                android:layout_width="0dp"
                android:layout_height="48dp"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                android:id="@+id/search_fragment_container"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintTop_toBottomOf="@+id/search_patient_title">

            </FrameLayout>

            <Button
                android:text="@string/cancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/cancel"
                app:layout_constraintLeft_toLeftOf="parent"
                style="@style/buttonStyle"
                android:layout_marginTop="8dp"
                app:layout_constraintTop_toBottomOf="@+id/search_fragment_container" />

            <TextView
                android:text="@string/search_patient"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/search_patient_title"
                android:layout_marginTop="8dp"
                app:layout_constraintTop_toBottomOf="@+id/spinner"
                android:layout_marginStart="16dp"
                app:layout_constraintLeft_toLeftOf="parent"
                android:layout_marginLeft="16dp"
                tools:text="Recherche du patient"
                style="@style/myTitle" />

        </android.support.constraint.ConstraintLayout>

    </RelativeLayout>

</layout>

And here is a screenshot of my blueprint (where the selected layout is the FrameLayout):

Blueprint

Thank's for any further help !

EDIT Got the same issue with CardView (seems legit since it's a FrameLayout child).


Solution

  • As this Google bug ticket is saying :

    Fixed in master.

    Released with Android Studio 2.3 beta 1