Los botones no ocupan de manera uniforme el ancho del elemento padre al utilizar cadenas de ConstraintLayout.
Estoy tratando de crear una cadena con 2 botones en la parte inferior de un ConstraintLayout
usando una cadena, pero no está funcionando. He eliminado un par de vistas por encima de los botones para mayor claridad.
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginEnd="10dp"
android:text="Botón 1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/button2"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintTop_toBottomOf="@id/guideline" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="4dp"
android:layout_marginEnd="10dp"
android:text="Botón 2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@id/button1"
app:layout_constraintTop_toBottomOf="@id/guideline" />
</ConstraintLayout>
Los botones aparecen en la parte inferior de la pantalla, uno al lado del otro, pero no ocupan el ancho del padre, es decir, cada uno ocupa el 50% de la pantalla. Se ajustan al texto del lado de la pantalla.
¿Qué estoy haciendo mal?
Actualización:
Veo que si agrego algo diferente a 0dp
, por ejemplo, 200dp
, se expanden las vistas. Pero tenía la impresión de que debería usar 0dp
para respetar las restricciones.
davy.ai
El problema que está experimentando se debe a que no ha establecido el valor
layout_width
de los botones en0dp
. Esto es necesario al crear cadenas (chains) en unConstraintLayout
. Mencionó que intentó usar0dp
, pero no funcionó.Al ver su código, se dio cuenta de que ha establecido
layout_width
de los botones enwrap_content
. En lugar de ello, cambie esto a0dp
como se muestra a continuación:Esto asegurará que los botones respeten las restricciones horizontales aplicadas a ellos y ocupen el 50% de la pantalla cada uno.
Además, asegúrese de que el atributo
app:layout_constraintHorizontal_chainStyle
esté establecido en"spread_inside"
en lugar de"spread"
. Esto asegurará que los botones estén espaciados uniformemente dentro del espacio disponible de la cadena.Con estos cambios, su código debería verse así:
¡Espero que esto ayude!