2009-09-30 10 views

Répondre

27

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

+2

AFAIK, layout_gravity est seulement pour LinearLayout, et non pour des dispositions arbitraires. – CommonsWare

+0

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

+0

je l'ai essayé aussi avec relativelayout et à mon avis cela fonctionne – ludwigm

131

É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.

+19

Cela a seulement fonctionné pour moi quand j'ai mis l'attribut android: layout_centerInParent = "true" dans la vue dans le RelativeLayout. –

+1

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? –

+3

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

17
<?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> 
6

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" 
/> 
+0

Il voulait dire mise en page au centre, pas de vue. –

+1

@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

+0

@Tim J'ai pensé qu'une mise en page ressemblait plus à un ViewGroup qu'à une View ... –

14

j'ai pu centrer une vue à l'aide

android:layout_centerHorizontal="true" 

et

android:layout_centerVertical="true" 

params.

+2

Notez que ces attributs ne fonctionnent que si la vue en question est (directement) dans un 'RelativeLayout'. – Karu

+0

c'est exactement ce dont j'avais besoin! Merci – joshmmo

0

Ajouter android: layout_centerInParent = "true" à l'élément que vous souhaitez centrer dans le RelativeLayout

0

Il travaillera pour ce code doivent parfois deux propriétés

android:layout_gravity="center" 
android:layout_centerHorizontal="true" 
1

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.

enter image description here

Questions connexes