Je veux mettre une mise en page au centre de l'écran.
Étape n ° 1: Emballez tout ce que vous voulez au centre de l’écran en plein écran RelativeLayout
.
Étape n ° 2: Donnez à cette vue enfant (celle que vous voulez centrer dans le RelativeLayout
) le Android:layout_centerInParent="true"
attribut.
Vous pouvez appliquer un centrage à n'importe quelle vue, y compris une présentation, en utilisant l'attribut XML Android: layout_gravity ". Vous voudrez probablement lui attribuer la valeur" centre ".
Vous pouvez trouver une référence des valeurs possibles pour cette option ici: http://developer.Android.com/reference/Android/widget/LinearLayout.LayoutParams.html#attr_Android:layout_gravity
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/relLayout1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center">
<ProgressBar
Android:id="@+id/ProgressBar01"
Android:layout_centerInParent="true"
Android:layout_width="wrap_content"
Android:layout_gravity="center"
Android:layout_height="wrap_content"></ProgressBar>
<TextView
Android:layout_below="@id/ProgressBar01"
Android:text="@string/please_wait_authenticating"
Android:id="@+id/txtText"
Android:paddingTop="30px"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"></TextView>
</RelativeLayout>
J'ai pu centrer une vue en utilisant
Android:layout_centerHorizontal="true"
et
Android:layout_centerVertical="true"
params.
Si vous voulez centrer une vue, utilisez celle-ci. Dans ce cas, TextView doit être la vue la plus basse de votre code XML, car layout_height est match_parent.
<TextView
Android:id="@+id/tv_to_be_centered"
Android:layout_height="match_parent"
Android:layout_width="match_parent"
Android:gravity="center"
Android:text="Some text"
/>
Il semble que la tendance actuelle dans Android) consiste à utiliser une présentation Constraint. Bien qu'il soit assez simple de centrer une vue à l'aide d'un RelativeLayout
(comme d'autres réponses l'ont montré), la ConstraintLayout
est plus puissant que le RelativeLayout
pour les mises en page plus complexes. Il est donc utile de savoir comment faire maintenant.
Pour centrer une vue, faites simplement glisser les poignées sur les quatre côtés du parent.
Cela fonctionnera car ce code a parfois besoin des deux propriétés
Android:layout_gravity="center"
Android:layout_centerHorizontal="true"
Ajoutez Android: layout_centerInParent = "true" à l'élément que vous souhaitez centrer dans RelativeLayout
Utilisez ConstraintLayout. Voici un exemple qui centrera la vue en fonction de la largeur et de la hauteur de l'écran parent:
<?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">
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:background="#FF00FF"
Android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_percent=".6"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent=".4"></LinearLayout>
</Android.support.constraint.ConstraintLayout>
Vous devrez peut-être changer de grade pour obtenir la dernière version de ConstraintLayout:
dependencies {
...
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
}