Können Sie einen Button in RelativeLayout zentrieren?

Lesezeit: 5 Minuten

Benutzer-Avatar
Arkadien

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.

  • 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

Benutzer-Avatar
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

Benutzer-Avatar
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


Benutzer-Avatar
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"

Benutzer-Avatar
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>

Benutzer-Avatar
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"/>

Benutzer-Avatar
Karma

Um in einer der Richtungen zentriert auszurichten, verwenden Sie android:layout_centerHorizontal=”true” oder android:layout_centerVertical=”true” im untergeordneten Layout

1346640cookie-checkKönnen Sie einen Button in RelativeLayout zentrieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy