Je souhaite placer une mise en page au centre de l'écran.Comment centrer une vue dans une mise en page Android?
Répondre
Vous pouvez appliquer un centrage à toute vue, y compris une mise en page, en utilisant l'attribut XML android. Layout_gravity ». Vous voulez sans doute donner la valeur « centre »
Vous pouvez trouver une référence possible valeurs pour cette option ici: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity
Étape # 1: Wrap tout ce que vous voulez centré sur l'écran dans un mode plein écran RelativeLayout
Étape # 2:. Donnez ce point de vue de l'enfant (celui qui vous voulez centré dans le RelativeLayout
) le android:layout_centerInParent="true"
attribut.
Cela a seulement fonctionné pour moi quand j'ai mis l'attribut android: layout_centerInParent = "true" dans la vue dans le RelativeLayout. –
Et si je veux le positionner au centre, mais le déplacer vers le bas s'il y a un risque de chevauchement avec une autre vue? –
Vous devez mettre 'android: layout_centerInParent =" true "' sur la vue enfant, pas sur 'RelativeLayout'. Les attributs 'android: layout_ *' affectent la position et la taille d'une vue dans son parent, et non le positionnement et la taille des enfants d'une vue. – Karu
<?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>
Si vous souhaitez centrer une vue, utilisez celle-ci. Dans ce cas, TextView doit être l'affichage le plus bas de votre fichier 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 voulait dire mise en page au centre, pas de vue. –
@IgorG. le positionnement d'une mise en page et d'une vue sont les mêmes, car une mise en page * est une vue *. – FoamyGuy
@Tim J'ai pensé qu'une mise en page ressemblait plus à un ViewGroup qu'à une View ... –
Ajouter android: layout_centerInParent = "true" à l'élément que vous souhaitez centrer dans le RelativeLayout
Il travaillera pour ce code doivent parfois deux propriétés
android:layout_gravity="center"
android:layout_centerHorizontal="true"
Mise à jour Réponse: Constraint Layout
Il semble que la tendance dans Android est maintenant d'utiliser une mise en page contrainte. Bien qu'il soit assez simple de centrer une vue en utilisant un RelativeLayout
(comme d'autres réponses l'ont montré), le ConstraintLayout
est plus puissant que le RelativeLayout
pour les mises en page plus complexes. Donc, il vaut la peine d'apprendre comment faire maintenant.
Pour centrer une vue, faites simplement glisser les poignées vers les quatre côtés du parent.
AFAIK, layout_gravity est seulement pour LinearLayout, et non pour des dispositions arbitraires. – CommonsWare
Comme vous l'avez mentionné layout_gravity est seulement pour LinearLayout Qu'en est-il de RelativeLayout parce que dans l'application je veux incorporer textview sur ImageView – Vicky
je l'ai essayé aussi avec relativelayout et à mon avis cela fonctionne – ludwigm