layout_constraintend_toendof ejemplo definicion constraint cambiar android android-layout android-support-library android-constraintlayout

android - ejemplo - ¿Cómo posicionarse debajo de la más baja de dos vistas en ConstraintLayout?



constraint layout ejemplo (2)

Ahora es posible con la clase Barrera, introducida en el diseño de restricción v1.1.0.

Así que aquí está la solución para su caso particular:

<?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" android:layout_height="match_parent" tools:context="com.example.eugene.test10.MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="wrap_content" android:background="#EEEEEE" android:text="TEXT_VIEW_1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toLeftOf="@+id/textView2"/> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="wrap_content" android:background="#DDDDDD" android:text="TEXT_VIEW_2" android:visibility="gone" app:layout_constraintLeft_toRightOf="@+id/textView1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <android.support.constraint.Barrier android:id="@+id/labelBarrier" android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="textView1,textView2" /> <TextView android:id="@+id/textView3" android:layout_width="0dp" android:layout_height="wrap_content" android:background="#CCCC00" android:text="TEXT_VIEW_3" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/labelBarrier" /> </android.support.constraint.ConstraintLayout>

Aquí están los resultados para usar este diseño:

Puede consultar esta guía paso a paso en Codelab https://codelabs.developers.google.com/codelabs/constraint-layout/#10 .

Tengo dos vistas de encabezado, HeaderViewA y HeaderViewB . Estas vistas pueden tener cualquier combinación de visibilidad visible o gone .

Necesito que BigView se coloque debajo de lo más bajo de HeaderViewA / HeaderViewB .

¿Es esto posible sin anidar en ConstraintLayout ?


<?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" android:layout_height="match_parent"> <TextView android:id="@+id/header_view_a" android:layout_width="0dp" android:layout_height="0dp" android:background="@android:color/holo_orange_light" android:gravity="center" android:text="HeaderViewA " android:layout_marginBottom="@dimen/sixteenDP" android:textSize="30sp" app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/header_view_b" app:layout_constraintEnd_toStartOf="@+id/header_view_b" app:layout_constraintVertical_bias="0" app:layout_constraintWidth_default="wrap" /> <TextView android:id="@+id/header_view_b" android:layout_width="wrap_content" android:layout_height="0dp" android:background="@android:color/holo_green_light" android:gravity="center" android:text="HeaderViewB" android:textAlignment="center" android:textSize="30sp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/guideline" app:layout_constraintStart_toEndOf="@+id/header_view_a"/> <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.4"/> <TextView android:id="@+id/big_view" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:background="@android:color/holo_blue_dark" android:gravity="center" android:text="BigView" android:textAlignment="center" android:textSize="@dimen/list_item_height" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline" app:layout_constraintVertical_bias="1.0"/> </android.support.constraint.ConstraintLayout>

Tenga cuidado con la app:layout_constraintWidth_default="wrap" (con el ancho establecido en 0dp ). Si está configurado, el widget tendrá el mismo tamaño que si estuviera usando wrap_content, pero estará limitado por las restricciones (es decir, no se expandirá más allá de ellas) y la app:layout_constraintVertical_bias="1.0" . Usa el sesgo para llevar a BigView al fondo de su padre.