uso tutorial linearlayout left español definicion constraintlayout constraint below align android android-constraintlayout

android - tutorial - constraintlayout linearlayout



¿Cuál es la diferencia entre barrera y guía en el diseño de restricciones? (2)

Recientemente intenté implementar el Constraint Layout pero encontré que la Barrier y la Guideline funcionan igual. Ambos funcionan como divisor. ¿Hay alguna diferencia entre ellos?


Documentación oficial sobre barrera :

Una barrera hace referencia a varios widgets como entrada y crea una guía virtual basada en el widget más extremo en el lado especificado. Por ejemplo, una barrera izquierda se alineará a la izquierda de todas las vistas referenciadas.

Documentos de capacitación sobre barrera :

Similar a una guía, una barrera es una línea invisible a la que puede restringir las vistas. Excepto que una barrera no define su propia posición; en cambio, la posición de barrera se mueve en función de la posición de las vistas contenidas en ella. Esto es útil cuando desea restringir una vista al conjunto de vistas en lugar de a una vista específica.


CUANDO UTILIZAR BARRERAS

Supongamos que tiene dos widgets TextView con alturas dinámicas y desea colocar un Button justo debajo del TextView más TextView :

La ÚNICA forma de implementar eso directamente en el diseño es usar una Barrier horizontal. Esa Barrier permite especificar una restricción basada en la altura de esos dos TextView s. Luego restringe la parte superior de su Button a la parte inferior de la Barrier horizontal.

<?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" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/left_text_view" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" android:textSize="16sp" android:background="#AAA" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@+id/right_text_view" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/right_text_view" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" android:textSize="16sp" android:background="#DDD" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/left_text_view" app:layout_constraintTop_toTopOf="parent" /> <android.support.constraint.Barrier android:id="@+id/barrier" android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" app:constraint_referenced_ids="left_text_view,right_text_view" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:text="Button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/barrier" /> </android.support.constraint.ConstraintLayout>

CUANDO UTILIZAR LAS DIRECTRICES

Supongamos que desea restringir las alturas de TextView mencionadas TextView al 30% de la altura de la pantalla, sin importar el contenido que tengan.

Para implementar eso, debe agregar una Guideline horizontal con posición de porcentaje y restringir la TextView inferior de TextView a esa Guideline .

<?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" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/left_text_view" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:background="#AAA" android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" android:textSize="16sp" app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toStartOf="@+id/right_text_view" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/right_text_view" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:background="#DDD" android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" android:textSize="16sp" app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/left_text_view" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:text="Button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline" /> <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.3" /> </android.support.constraint.ConstraintLayout>

CONCLUSIÓN

La única diferencia entre Barrier y Guideline es que la posición de la Barrier es flexible y siempre se basa en el tamaño de múltiples elementos de la IU contenidos en ella y la posición de la Guideline siempre es fija.