J'essaie de créer une mise en page en utilisant un ConstraintLayout
comme parent
qui a trois boutons
comme dans l'image ci-dessous.
Le fichier de mise en page xml ressemble à ceci:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <Button android:id="@+id/splash_facebook_btn" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_margin="15dp"/> <Button android:id="@+id/splash_sign_in_btn" android:layout_width="180dp" android:layout_height="45dp" android:layout_marginStart="16dp" android:layout_marginTop="12dp" app:layout_constraintHorizontal_weight="1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/splash_facebook_btn" /> <Button android:id="@+id/splash_sign_up_btn" android:layout_width="180dp" android:layout_height="45dp" android:layout_marginEnd="15dp" app:layout_constraintBottom_toBottomOf="@id/splash_sign_in_btn" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.995" app:layout_constraintHorizontal_weight="1" app:layout_constraintStart_toEndOf="@id/splash_sign_in_btn" app:layout_constraintTop_toTopOf="@id/splash_sign_in_btn" app:layout_constraintVertical_bias="0.0" />
I voulez faire cela sans définir de valeurs fixes pour les deux boutons en bas.
Je sais que je peux y parvenir en passant à LinearLayout
et en utilisant layout_weight
mais je veux le faire tout en ayant un code ConstraintLayout > en tant que parent.
Y a-t-il un moyen de faire cela?
3 Réponses :
Pour le bouton gauche, définissez android: layout_marginEnd = "8dp"
pour le bouton droit android: layout_marginStart = "8dp"
puis définissez par programme leur largeur:
<?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"> <Button android:id="@+id/splash_facebook_btn" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_margin="15dp"/> <LinearLayout android:layout_width="match_parent" android:layout_height="45dp" android:orientation="horizontal" android:weightSum="2" android:layout_marginTop="8dp" android:layout_marginStart="16dp" android:layout_marginEnd="16dp" app:layout_constraintTop_toBottomOf="@+id/splash_facebook_btn" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" > <Button android:id="@+id/splash_sign_in_btn" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginEnd="8dp" android:layout_weight="1" /> <Button android:id="@+id/splash_sign_up_btn" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginStart="8dp" android:layout_weight="1" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
Cela peut fonctionner mais je recherche quelque chose de plus simple qui n'implique que du xml. Merci d'avoir répondu.
J'ai fait des modifications avec la version XML uniquement. Il inclut LinearLayout
dans votre ConstraintLayout
Je sais que vous pouvez le faire avec LinearLayout
et layout_weight
, mentionné dans la question
Vérifiez ensuite la réponse de @Frank D. avec guide
Utilisez une Guideline
comme :
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <Button android:id="@+id/splash_facebook_btn" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_margin="15dp"/> <Button android:id="@+id/splash_sign_in_btn" android:layout_width="0dp" android:layout_height="45dp" android:layout_marginStart="16dp" android:layout_marginEnd="15dp" android:layout_marginTop="12dp" app:layout_constraintHorizontal_weight="1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/guideline_vertical" app:layout_constraintTop_toBottomOf="@id/splash_facebook_btn" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline_vertical" android:layout_width="1dp" android:layout_height="match_parent" android:orientation="vertical" app:layout_constraintGuide_percent="0.5"/> <Button android:id="@+id/splash_sign_up_btn" android:layout_height="0dp" android:layout_width="0dp" android:layout_marginEnd="15dp" android:layout_marginStart="15dp" app:layout_constraintBottom_toBottomOf="@id/splash_sign_in_btn" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/guideline_vertical" app:layout_constraintTop_toTopOf="@id/splash_sign_in_btn" app:layout_constraintVertical_bias="0.0"/> </androidx.constraintlayout.widget.ConstraintLayout>
Supprimez les valeurs fixes, ajoutez des contraintes à ces boutons: gauche et droite et définissez leur largeur sur 0dp. voici l'image voici le résultat:
<androidx.constraintlayout.widget.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"> <Button android:id="@+id/splash_facebook_btn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="15dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:text="continua cu cancer frate" /> <Button android:id="@+id/splash_sign_in_btn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:layout_marginEnd="16dp" app:layout_constraintEnd_toStartOf="@id/splash_sign_up_btn" app:layout_constraintStart_toStartOf="@id/splash_facebook_btn" app:layout_constraintTop_toBottomOf="@id/splash_facebook_btn" tools:text="intra aici frate" /> <Button android:id="@+id/splash_sign_up_btn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="12dp" app:layout_constraintEnd_toEndOf="@id/splash_facebook_btn" app:layout_constraintStart_toEndOf="@id/splash_sign_in_btn" app:layout_constraintTop_toBottomOf="@id/splash_facebook_btn" tools:text="Creeaza cont frate" />
PS: J'ai ajouté tools: text pour qu'il y ait du texte dans l'aperçu d'Android Studio. PSS: Bonne chance frate
Mersi omule :))