Hay dos formas de lograr esto usando ConstraintLayout
: Cadenas y Pautas . Para usar Chains, asegúrese de estar usando ConstraintLayout
Beta 3 o más reciente y si desea usar el editor de diseño visual en Android Studio, asegúrese de estar usando Android Studio 2.3 Beta 1 o más reciente.
Método 1 - Usando cadenas
Abra el editor de diseño y agregue sus widgets de manera normal, agregando restricciones principales según sea necesario. En este caso, he agregado dos botones con restricciones en la parte inferior del padre y el lado del padre (lado izquierdo para el botón Guardar y lado derecho para el botón Compartir):
Tenga en cuenta que en este estado, si volteo a la vista horizontal, las vistas no llenan el padre sino que están ancladas a las esquinas:
Resalte ambas vistas, ya sea haciendo clic con Ctrl / Cmd o arrastrando un cuadro alrededor de las vistas:
Luego haga clic derecho en las vistas y elija "Centrar horizontalmente":
Esto establece una conexión bidireccional entre las vistas (que es cómo se define una cadena). Por defecto, el estilo de cadena es "spread", que se aplica incluso cuando no se incluye ningún atributo XML. Siguiendo con este estilo de cadena pero configurando el ancho de nuestras vistas para permitir que 0dp
las vistas llenen el espacio disponible, extendiéndose uniformemente entre los padres:
Esto es más notable en la vista horizontal:
Si prefiere omitir el editor de diseño, el XML resultante se verá así:
<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">
<Button
android:id="@+id/button_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_save_text"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="4dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/button_share"
app:layout_constraintHorizontal_chainStyle="spread" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_share_text"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintLeft_toRightOf="@+id/button_save"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
Detalles:
- establecer el ancho de cada elemento
0dp
o MATCH_CONSTRAINT
permite que las vistas llenen el elemento primario (opcional)
- las vistas deben estar unidas bidireccionalmente (a la derecha de los enlaces del botón Guardar para compartir, a la izquierda de los enlaces del botón Compartir para guardar el botón), esto sucederá automáticamente a través del editor de diseño al elegir "Centrar horizontalmente"
- la primera vista en la cadena puede especificar el estilo de la cadena a través de
layout_constraintHorizontal_chainStyle
, consulte la documentación de varios estilos de cadena, si el estilo de la cadena se omite, el valor predeterminado es "propagación"
- La ponderación de la cadena se puede ajustar a través de
layout_constraintHorizontal_weight
- este ejemplo es para una cadena horizontal, hay atributos correspondientes para cadenas verticales
Método 2: uso de una directriz
Abra su diseño en el editor y haga clic en el botón de la guía:
Luego seleccione "Agregar directriz vertical":
Aparecerá una nueva directriz, que de forma predeterminada, probablemente estará anclada a la izquierda en valores relativos (indicados por la flecha hacia la izquierda):
Haga clic en la flecha hacia la izquierda para cambiarlo a un valor porcentual, luego arrastre la guía a la marca del 50%:
La guía ahora se puede usar como un ancla para otras vistas. En mi ejemplo, adjunté la derecha del botón Guardar y la izquierda del botón Compartir a la guía:
Si desea que las vistas llenen el espacio disponible, entonces la restricción debe establecerse en "Cualquier tamaño" (las líneas onduladas que se ejecutan horizontalmente):
(Esto es lo mismo que configurar el layout_width
a 0dp
).
También se puede crear una guía en XML con bastante facilidad en lugar de usar el editor de diseño:
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />