Können Sie eine Schaltfläche in RelativeLayout zentrieren?
174
Ich versuche, eine Schaltfläche im relativen Layout zu zentrieren. Ist dies möglich? Ich habe die Funktionen Schwerkraft und Orientierung ausprobiert, aber sie tun nichts.
Das zentriert sich horizontal und veritkal, wie wäre es mit layout_centerHorizontal = true
user3076750
37
Arcadia, probieren Sie einfach den folgenden Code. Es gibt verschiedene Möglichkeiten, um das gewünschte Ergebnis zu erzielen. Dies ist eine der einfacheren Möglichkeiten.
Das Einstellen der Schwerkraft des RelativeLayout selbst wirkt sich auf alle darin platzierten Objekte aus. In diesem Fall ist es nur der Knopf. Natürlich können Sie hier jede der Schwerkrafteinstellungen verwenden (z. B. center_horizontal, oben, rechts usw.).
Vielen Dank. Wenn ich jedoch mehrere Tasten hätte und nur eine zentriert haben wollte, wie würde ich das tun? Der erste Code würde alles innerhalb des übergeordneten relativen Layouts zentrieren. Wie könnte ich den Knopf oben in der Reihe zentrieren?
Arcadia
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 nach oben auszurichten und horizontal zu zentrieren. Was genau wollen Sie erreichen, ich kann ein besseres Beispiel geben.
Kevin Coppock
Ich beginne kaum mit meinem Studium der Android-Entwicklung und versuche zu verstehen, wie man Dinge manipuliert, um das zu tun, was ich will. Grundsätzlich möchte ich vermeiden, Dinge mit Pixeln auszurichten, da das Bild auf einem anderen Bildschirmtyp / einer anderen Bildschirmauflösung sehr unterschiedlich aussehen kann. Wenn Sie jedoch den Befehl Schwerkraft verwenden, folgt ihm alles. Ich habe versucht, die Schwerkraft für eine Schaltfläche mithilfe von ignoreGravity zu deaktivieren, aber es hat nicht funktioniert. Dieses Zeug ist sehr knifflig.
Arcadia
Ja, das kann es 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 Sie von dort aus. Dieses kurze Tutorial kann auch einigen helfen: developer.android.com/resources/tutorials/views/…
Kevin Coppock
Ja, ich habe dieses Tutorial tatsächlich gemacht. Ich gehe jedes der Tutorials durch und lerne, wie man sie vollständig manipuliert, sonst habe ich keine Ahnung, wie jedes anders ist.
Arcadia
25
Zusammengefasst
Hinzufügen:
android:layout_centerInParent="true"
funktioniert nur in RelativeLayout, wenn eines der folgenden Attribute auch für die Ansicht festgelegt ist:
Dadurch wird die untergeordnete Ansicht an der übergeordneten Ansicht ausgerichtet. Das "Zentrum" basiert auf der Achse der von Ihnen gewählten Ausrichtung:
links / rechts -> vertikal
oben / unten -> horizontal
Einstellen der Schwerkraft von Kindern / Inhalten in der Ansicht:
android:gravity="center"
zentriert das Kind in jedem Fall in 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"
Dadurch wird die Ansicht selbst in der übergeordneten Ansicht zentriert
Und schließlich können Sie der Elternansicht das folgende Attribut hinzufügen:
Um die Ausrichtung in einer der Richtungen zu zentrieren, verwenden Sie android: layout_centerHorizontal = "true" oder android: layout_centerVertical = "true" im untergeordneten Layout
Das Entfernen von Ausrichtungen wie android: layout_alignParentStart = "true" und das Hinzufügen von centerInParent hat bei mir funktioniert. Wenn das "Ausrichten" erhalten bleibt, funktioniert centerInParent nicht
Antworten:
Versuchen
Genau so funktioniert es bei mir:
quelle
Sie können CENTER_IN_PARENT für das relative Layout verwenden.
android:layout_centerInParent="true"
Zum Element hinzufügen , das Sie im RelativeLayout zentrieren möchtenquelle
Arcadia, probieren Sie einfach den folgenden Code. Es gibt verschiedene Möglichkeiten, um das gewünschte Ergebnis zu erzielen. Dies ist eine der einfacheren Möglichkeiten.
Das Einstellen der Schwerkraft des RelativeLayout selbst wirkt sich auf alle darin platzierten Objekte aus. In diesem Fall ist es nur der Knopf. Natürlich können Sie hier jede der Schwerkrafteinstellungen verwenden (z. B. center_horizontal, oben, rechts usw.).
Sie können diesen Code auch unten verwenden:
quelle
Zusammengefasst
Hinzufügen:
funktioniert nur in RelativeLayout, wenn eines der folgenden Attribute auch für die Ansicht festgelegt ist:
Dadurch wird die untergeordnete Ansicht an der übergeordneten Ansicht ausgerichtet. Das "Zentrum" basiert auf der Achse der von Ihnen gewählten Ausrichtung:
links / rechts -> vertikal
oben / unten -> horizontal
Einstellen der Schwerkraft von Kindern / Inhalten in der Ansicht:
zentriert das Kind in jedem Fall in der übergeordneten Ansicht, wenn keine Ausrichtung festgelegt ist. Optional können Sie wählen:
Dann ist da:
Dadurch wird die Ansicht selbst in der übergeordneten Ansicht zentriert
Und schließlich können Sie der Elternansicht das folgende Attribut hinzufügen:
quelle
Verwenden Sie das Attribut
android:centerInParent="true"
in einer Ansicht, wenn Sie die Ansicht im relativen Layout zentrieren möchten.quelle
Es ist einfach, richten Sie es nicht an irgendetwas aus
quelle
Um die Ausrichtung in einer der Richtungen zu zentrieren, verwenden Sie android: layout_centerHorizontal = "true" oder android: layout_centerVertical = "true" im untergeordneten Layout
quelle
Das Entfernen von Ausrichtungen wie android: layout_alignParentStart = "true" und das Hinzufügen von centerInParent hat bei mir funktioniert. Wenn das "Ausrichten" erhalten bleibt, funktioniert centerInParent nicht
quelle
Es ist wirklich einfach. Versuchen Sie den Code unten,
quelle
Sie müssen es links oder rechts von der übergeordneten Ansicht ausgerichtet haben
Verwenden Sie keine dieser Optionen, wenn Sie
android:centerInParent="true"
Codes verwenden: -android:layout_alignParentLeft="true"
android:layout_alignParentLeft="true"
android:layout_alignRight=""
etc.
quelle