J'utilise une disposition linéaire pour afficher un écran initial assez léger. Il comporte 1 bouton censé se centrer sur l’écran horizontalement et verticalement. Cependant, peu importe ce que j'essaie de faire, le bouton alignera le centre en haut. J'ai inclus le code XML ci-dessous. Quelqu'un peut-il m'indiquer la bonne direction?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<ImageButton Android:id="@+id/btnFindMe"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_vertical|center_horizontal"
Android:background="@drawable/findme"></ImageButton>
</LinearLayout>
Si vous souhaitez centrer un élément au milieu de l'écran, n'utilisez pas une LinearLayout
car elles sont conçues pour afficher plusieurs éléments à la suite.
Utilisez plutôt un RelativeLayout
.
Alors remplacez:
Android:layout_gravity="center_vertical|center_horizontal"
pour l'option RelativeLayout
pertinente:
Android:layout_centerInParent="true"
Donc, votre fichier de présentation ressemblera à ceci:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout Android:id="@+id/RelativeLayout01"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<ImageButton Android:id="@+id/btnFindMe"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:background="@drawable/findme"></ImageButton>
</RelativeLayout>
Centre utilisant un LinearLayout:
<LinearLayout
Android:id="@+id/LinearLayout1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center"
Android:orientation="vertical" >
<ImageButton
Android:id="@+id/btnFindMe"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/findme" />
</LinearLayout>
Avez-vous essayé de définir Android:gravity="center_vertical|center_horizontal"
dans la mise en page et de définir Android:layout_weight="1"
dans l'image?
Une méthode couramment utilisée qui fonctionne avec une disposition linéaire consiste à définir une propriété sur le bouton d'image.
Android:layout_gravity="center"
Vous pouvez choisir d'aligner à gauche, à centre ou à droite chaque objet de la présentation linéaire. Notez que la ligne ci-dessus est exactement la même chose que
Android:layout_gravity="center_vertical|center_horizontal"
Ajoute ça
Android:gravity="center"
Dans LinearLayout.
facile avec ça
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:visibility="visible"
Android:gravity="center"
Android:orientation="vertical" >
<ProgressBar
Android:id="@+id/pbEndTrip"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
/>
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
Android:gravity="center"
Android:text="Gettings" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<ImageButton Android:id="@+id/btnFindMe"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity = "center"
Android:background="@drawable/findme">
</ImageButton>
</LinearLayout>
Le code ci-dessus fonctionnera.
Vous pouvez utiliser la variable RelativeLayout
.
Selon la documentation Android pour les attributs XML de Android: layout_gravity , nous pouvons le faire facilement :)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageButton Android:id="@+id/btnFindMe"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/findme"></ImageButton>
</LinearLayout>
Si vous utilisez LinearLayout
, vous pouvez ajouter un centre de gravité:
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:gravity="center">
<Button
Android:layout_width="200dp"
Android:layout_height="wrap_content"
/>
</LinearLayout>`
échantillon complet et fonctionnel de ma machine ...
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:orientation="vertical"
tools:context=".MainActivity"
Android:gravity="center"
Android:textAlignment="center">
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceLarge"
Android:text="My Apps!"
Android:id="@+id/textView"
Android:gravity="center"
Android:layout_marginBottom="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:text="SPOTIFY STREAMER"
Android:id="@+id/button_spotify"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:text="SCORES"
Android:id="@+id/button_scores"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="LIBRARY APP"
Android:id="@+id/button_library"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="BUILD IT BIGGER"
Android:id="@+id/button_buildit"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="BACON READER"
Android:id="@+id/button_bacon"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
<Button
Android:layout_width="220dp"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:text="CAPSTONE: MY OWN APP"
Android:id="@+id/button_capstone"
Android:gravity="center"
Android:layout_below="@+id/textView"
Android:padding="20dp"
/>
</LinearLayout>
Vous pouvez également définir la largeur de LinearLayout sur wrap_content
et utiliser Android:layout_centerInParent
, Android:layout_centerVertical="true"
:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_centerInParent="true"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"
>
<ImageButton Android:id="@+id/btnFindMe"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/findme"/>
il suffit d'utiliser (pour le faire au centre de votre mise en page)
Android:layout_gravity="center"
et utilise
Android:layout_marginBottom="80dp"
Android:layout_marginTop="80dp"
changer de position
Vous pouvez aussi essayer ce code:
<LinearLayout
Android:id="@+id/linear_layout"
Android:layout_width="fill_parent"
Android:layout_height="0dp"
Android:layout_gravity="center"
Android:orientation="horizontal"
Android:weightSum="2.0"
Android:background="@drawable/anyBackground" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:orientation="vertical"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/img_mail"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/yourImage" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:orientation="vertical"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/img_save"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:background="@drawable/yourImage" />
</LinearLayout>
</LinearLayout>
Définissez sur true Android:layout_alignParentTop="true"
et Android:layout_centerHorizontal="true"
dans le bouton, comme ceci:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
>
<Button
Android:id="@+id/switch_flashlight"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/turn_on_flashlight"
Android:textColor="@Android:color/black"
Android:onClick="action_trn"
Android:background="@Android:color/holo_green_light"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:padding="5dp" />
</RelativeLayout>