Ich versuche, eine Schaltfläche im relativen Layout zu zentrieren, ist das möglich? Ich habe die Schwerkraft- und Orientierungsfunktionen ausprobiert, aber sie tun nichts.
Können Sie einen Button in RelativeLayout zentrieren?
Arkadien
Schattengott
Versuchen
android:layout_centerHorizontal="true"
Genau so funktioniert es bei mir:
<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>
-
Ich funktioniert nicht, wenn Sie match_parent für Ihre Breite haben.
– Ghoti
14. März 2014 um 11:28 Uhr
-
Wenn Sie match_parent für Ihre Breite haben, ist es bereits horizontal zentriert.
– ataulm
4. September 2015 um 11:27 Uhr
Josnidhin
Sie können CENTER_IN_PARENT für ein relatives Layout verwenden.
Hinzufügen android:layout_centerInParent="true"
zu Element, das Sie im RelativeLayout zentrieren möchten
-
Das zentriert horizontal und vertikal, wie wäre es mit layout_centerHorizontal=true
– Benutzer3076750
1. Juli 2020 um 17:15 Uhr
Kevin Copock
Arcadia, probiere einfach den folgenden Code aus. Es gibt mehrere Möglichkeiten, das gewünschte Ergebnis zu erzielen, dies ist eine der einfacheren Möglichkeiten.
<?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>
Das Festlegen der Schwerkraft des RelativeLayout selbst wirkt sich auf alle darin platzierten Objekte aus. In diesem Fall ist es nur der Knopf. Sie können hier natürlich alle Schwerkrafteinstellungen verwenden (z. B. center_horizontal, top, right usw.).
Sie können auch diesen Code unten verwenden:
<?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>
-
Vielen Dank. Wenn ich jedoch mehrere Schaltflächen hätte und nur eine zentriert haben möchte, wie würde ich das tun? Der erste Code würde alles innerhalb des übergeordneten relativen Layouts zentrieren. Wie könnte ich die Schaltfläche oben in der Zeile zentrieren?
– Arkadien
20. September 2010 um 3:26 Uhr
-
Verwenden Sie einfach das zweite Beispiel und fügen Sie centerInParent nur zu der Schaltfläche hinzu, die Sie zentrieren möchten. Sie können auch centerHorizontal und layout_alignParentTop verwenden, um es oben auszurichten und horizontal zu zentrieren. Was genau versuchst du zu erreichen, vielleicht kann ich ein besseres Beispiel geben.
– Kevin Copock
20. September 2010 um 4:48 Uhr
-
Ich beginne gerade erst mit meinem Studium der Android-Entwicklung und versuche, vollständig zu verstehen, wie man Dinge manipuliert, um das zu tun, was ich will. Grundsätzlich möchte ich davon absehen, Dinge mit Pixeln auszurichten, da das Bild auf einem anderen Bildschirmtyp / einer anderen Auflösung sehr unterschiedlich aussehen könnte. Wenn Sie jedoch den Schwerkraftbefehl verwenden, folgt ihm alles. Ich habe versucht, die Schwerkraft für eine Schaltfläche mithilfe von IgnoreGravity zu deaktivieren, und es hat nicht funktioniert. Dieses Zeug ist sehr knifflig.
– Arkadien
20. September 2010 um 5:01 Uhr
-
Ja, das kann definitiv sein. Es gibt viele Möglichkeiten, ein bestimmtes Layout zu erstellen. Am besten skizzieren Sie es in Ihrem Kopf, wie Sie es wollen, und gehen von dort aus. Dieses kurze Tutorial kann einigen auch helfen: developer.android.com/resources/tutorials/views/…
– Kevin Copock
20. September 2010 um 6:13 Uhr
-
Ja, ich habe tatsächlich dieses Tutorial gemacht. Ich gehe jedes der Tutorials durch und lerne, wie man sie vollständig manipuliert, sonst habe ich kein Verständnis dafür, wie sich jedes unterscheidet.
– Arkadien
20. September 2010 um 14:31 Uhr
Zusammengefasst
Hinzufügen:
android:layout_centerInParent="true"
funktioniert nur auf RelativeLayout, wenn eines der folgenden Attribute auch für die Ansicht gesetzt ist:
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
wodurch die untergeordnete Ansicht an der übergeordneten Ansicht ausgerichtet wird. Die “Mitte” richtet sich nach der Achse der von Ihnen gewählten Ausrichtung:
links/rechts -> vertikal
oben/unten -> horizontal
Festlegen der Schwerkraft von untergeordneten Elementen/Inhalten in der Ansicht:
android:gravity="center"
zentriert das untergeordnete Element in jedem Fall innerhalb der übergeordneten Ansicht, wenn keine Ausrichtung festgelegt ist. Optional können Sie wählen:
<!-- 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"
...
Dann ist da:
android:layout_gravity="center"
wodurch die Ansicht selbst in ihrem übergeordneten Element zentriert wird
Und schließlich können Sie der Elternansicht das folgende Attribut hinzufügen:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
KarthikKPN
Verwenden Sie das Attribut android:centerInParent="true"
innerhalb einer Ansicht, wenn Sie die Ansicht im relativen Layout zentrieren möchten.
<?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>
Bruno Bieri
Es ist einfach, richten Sie es nicht an irgendetwas aus
<Button
android:id="@+id/the_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Centered Button"/>
Karma
Um in einer der Richtungen zentriert auszurichten, verwenden Sie android:layout_centerHorizontal=”true” oder android:layout_centerVertical=”true” im untergeordneten Layout
Sprache? Rahmen? Betriebssystem?
– Arnold Spence
20. September 2010 um 2:00 Uhr
@Arnold Spence: Du hast mich um 24 Sekunden geschlagen 🙂
– Nippysaurus
20. September 2010 um 2:01 Uhr
Entschuldigung, dies ist das erste Mal, dass ich Stack Overflow verwende. Ja, ich entwickle für Android. =)
– Arkadien
20. September 2010 um 2:14 Uhr
Kein Problem. Die richtigen Tags werden schneller die Aufmerksamkeit der richtigen Leute auf sich ziehen. Fest 🙂
– Arnold Spence
20. September 2010 um 2:21 Uhr
+1 an Arnold Spence für seine Rücksichtnahme. Einige Leute auf SO hätten das OP verbal zerstört, weil es nur “neu” war.
– Subby
23. Januar 2014 um 11:27 Uhr