web-dev-qa-db-fra.com

Pouvez-vous centrer un bouton dans RelativeLayout?

J'essaie de centrer un bouton dans la disposition relative, est-ce possible? J'ai essayé les fonctions Gravité et Orientation mais elles ne font rien.

153
Arcadia

Essayer

Android:layout_centerHorizontal="true"

Exactement comme ça, ça marche pour moi:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:layout_width="fill_parent"
                Android:layout_height="fill_parent"
                Android:background="#ff0000">

    <Button
        Android:id="@+id/btn_mybutton"
        Android:layout_height="wrap_content"
        Android:layout_width="124dip"
        Android:layout_marginTop="5dip"
        Android:layout_centerHorizontal="true"/>

</RelativeLayout>
336
ShadowGod

Vous pouvez utiliser CENTER_IN_PARENT pour une présentation relative.

Ajoutez Android:layout_centerInParent="true" à l'élément que vous souhaitez centrer dans RelativeLayout

94
Josnidhin

Arcadia, essayez juste le code ci-dessous. Il existe plusieurs façons d’obtenir le résultat recherché, c’est l’une des méthodes les plus simples.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/relative_layout"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent"
    Android:gravity="center">

    <Button
        Android:id="@+id/the_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Centered Button"/>
</RelativeLayout>

Le réglage de la gravité de RelativeLayout lui-même affectera tous les objets placés à l'intérieur de celui-ci. Dans ce cas, c'est juste le bouton. Vous pouvez utiliser n'importe quel paramètre de gravité ici (par exemple, center_horizontal, top, right, etc.). 

Vous pouvez également utiliser ce code ci-dessous:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/relative_layout"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent">

    <Button
        Android:id="@+id/the_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Centered Button"
        Android:layout_centerInParent="true"/>
</RelativeLayout>
35
kcoppock

Résumé

Ajouter:

Android:layout_centerInParent="true"

ne fonctionne que sur RelativeLayout, si l'un des attributs suivants est également défini pour la vue:

Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true"
Android:layout_alignParentTop="true"
Android:layout_alignParentBottom="true"
Android:layout_alignParentRight="true"
Android:layout_alignParentEnd="true"

qui aligne la vue enfant sur la vue parent. Le "centre" est basé sur l'axe de l'alignement que vous avez choisi: 

gauche/droite -> vertical

haut/bas -> horizontal

Définition de la gravité des enfants/du contenu dans la vue:

Android:gravity="center"

dans tous les cas, l'enfant est centré à l'intérieur de la vue parent, si aucun alignement n'est défini. En option, vous pouvez choisir:

<!-- Axis to Center -->
Android:gravity="center_horizontal"
Android:gravity="center_vertical"

<!-- Alignment to set-->
Android:gravity="top"
Android:gravity="bottom"
Android:gravity="left"
Android:gravity="right"
Android:gravity="fill"
...

Ensuite il y a:

Android:layout_gravity="center"

qui centre la vue elle-même à l'intérieur de son parent

Et enfin, vous pouvez ajouter l'attribut suivant à la vue des parents:

Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
17
Code.IT

Utilisez l'attribut Android:centerInParent="true" dans une vue, Pour centrer la vue dans la présentation relative.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/main_layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    >
    <TextView
        Android:layout_centerInParent="true"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="NWE"
        Android:textSize="30dp"/>
</RelativeLayout>
7
KarthikKPN

C'est facile, ne l'alignez à rien

<Button
        Android:id="@+id/the_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" 
        Android:layout_centerInParent="true"
        Android:text="Centered Button"/>

5
Sheychan

Pour centrer l'alignement dans l'une des directions, utilisez Android: layout_centerHorizontal = "true" ou Android: layout_centerVertical = "true" dans la présentation enfant.

2
karma

C'est vraiment facile. Essayez le code ci-dessous,

<RelativeLayout
    Android:id="@+id/second_RL"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_below="@+id/first_RL"
    Android:background="@Android:color/holo_blue_bright"
    Android:gravity="center">

    <Button
        Android:id="@+id/button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Button" />

</RelativeLayout>
1
Primesh

Supprimer tout alignement comme Android: layout_alignParentStart = "true" et Ajouter centerInParent a fonctionné pour moi. Si le "align" reste dans, le CenterInParent ne fonctionne pas

1
al881

vous devez l'avoir aligné à gauche ou à droite de la vue parent

n'utilisez aucun de ceux-ci lorsque vous utilisez les codes Android:centerInParent="true": -

Android:layout_alignParentLeft="true" 

Android:layout_alignParentLeft="true"

Android:layout_alignRight=""

etc. 

0
Divy sindhu