J'utilise ConstraintLayout
dans mon application pour faire la mise en page des applications. J'essaie de créer un écran où un EditText
et Button
devrait être au centre et Button
devrait être en dessous de EditText
avec un marginTop seulement 16dp.
Voici ma mise en page et capture d'écran à quoi cela ressemble en ce moment.
activity_authenticate_content.xml
<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"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Avons-nous besoin d'utiliser à chaque fois que nous utilisonsConstraintLayout
?layout_constraintGuide_percent
?Guideline
est juste un élément invisible sur lequel vous pouvez ancrer vos vues.layout_constraintGuide_percent
est le pourcentage dans le parent. Ici 0,5 est une hauteur de 50%TextInputEditText
et unButton
. Je veux les placer au centre de l'écran. Mais pour l'instant ce n'est pas pastebin.com/iXYtuXHg voici la capture d'écran dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
et le centrer.Il existe un moyen plus simple. Si vous définissez les contraintes de disposition comme suit et que votre EditText est de taille fixe, il sera centré dans la disposition des contraintes:
La paire gauche / droite centre la vue horizontalement et la paire haut / bas la centre verticalement. En effet, lorsque vous définissez les contraintes gauche, droite ou supérieure, inférieure plus grandes que la vue elle-même, la vue est centrée entre les deux contraintes, c'est-à-dire que le biais est défini sur 50%. Vous pouvez également déplacer la vue vers le haut / bas ou la droite / gauche en définissant le biais vous-même. Jouez un peu avec et vous verrez comment cela affecte la position des vues.
la source
app:layout_constraintCenter_in="parent"
serait bien mieux. Mais comme toujours, Google ne l'a pas fourni.La solution avec directive ne fonctionne que dans ce cas particulier avec EditText sur une seule ligne. Pour le faire fonctionner pour EditText multiligne, vous devez utiliser une chaîne "compactée".
Voici à quoi ça ressemble:
Vous pouvez en savoir plus sur l'utilisation des chaînes dans les articles suivants:
la source
Vous pouvez centrer une vue en pourcentage de la taille de l'écran.
Cet exemple utilise 50% de la largeur et de la hauteur:
Cela a été fait en utilisant ConstraintLayout version 1.1.3. N'oubliez pas de l'ajouter à vos dépendances dans le gradle et d'augmenter la version s'il y en a une nouvelle:
la source
ajoutez ces balises dans votre vue
et vous pouvez faire un clic droit en mode conception et choisir le centre.
la source
vous pouvez utiliser layout_constraintCircle pour une vue centrale à l'intérieur de ConstraintLayout.
avec constraintCircle au parent et un rayon nul, vous pouvez faire de votre vue le centre du parent.
la source