Sto usando un layout lineare per visualizzare uno schermo iniziale piuttosto leggero. Ha 1 pulsante che dovrebbe centrare nello schermo sia orizzontalmente che verticalmente. Tuttavia, indipendentemente da ciò che cerco di fare, il pulsante si allinea in alto al centro. Ho incluso l'XML qui sotto, qualcuno può indicarmi la giusta direzione?
<?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>
Se si desidera centrare un oggetto nel mezzo dello schermo non utilizzare un LinearLayout
in quanto questi sono pensati per visualizzare un numero di elementi in una riga.
Usa un RelativeLayout
invece.
Quindi sostituire:
Android:layout_gravity="center_vertical|center_horizontal"
per l'opzione RelativeLayout
pertinente:
Android:layout_centerInParent="true"
Quindi il tuo file di layout sarà simile a questo:
<?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>
Centra utilizzando 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>
Hai provato a definire Android:gravity="center_vertical|center_horizontal"
all'interno del layout e a impostare Android:layout_weight="1"
nell'immagine?
Un metodo comunemente utilizzato che funziona con il layout lineare consiste nell'impostare una proprietà sul pulsante dell'immagine
Android:layout_gravity="center"
È possibile scegliere se allineare a sinistra, allineare il centro o allineare a destra ogni oggetto nel layout lineare. Si noti che la riga sopra è esattamente la stessa di
Android:layout_gravity="center_vertical|center_horizontal"
Aggiungi questo
Android:gravity="center"
In LinearLayout.
facile con questo
<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>
Il codice sopra funzionerà.
Puoi usare RelativeLayout
.
Come per la documentazione di Android per gli attributi XML di Android: layout_gravity , possiamo farlo facilmente :)
<?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>
Se usi LinearLayout
puoi aggiungere il centro di 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>`
campione completo e funzionante dalla mia macchina ...
<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>
Puoi anche impostare la larghezza del LinearLayout su wrap_content
e utilizzare 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"/>
Puoi anche provare questo codice:
<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>
Impostato su true Android:layout_alignParentTop="true"
e Android:layout_centerHorizontal="true"
nel pulsante, come questo:
<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>