Android RelativeLayout alignCenter aus anderer Sicht
Ich habe eine RelativeLayout
mit zwei Kindern, die sind auch beide RelativeLayout
s mit ein paar Tasten und Dinge. Diese Kinder layouts sind nicht zentriert in meinem Haupt-layout, und das Haupt-layout enthält einige andere Dinge, aus der die Seiten der beiden. Ich will die erste, die auf der Oberseite des zweiten. Ist das einfach genug ist, benutzen Sie einfach android:layout_below="@+id/firstLayout"
in der zweiten. Aber ich möchte auch die zweite zu sein, ausgerichtet auf die Mitte des ersten. Ich meine ich will das zweite layout zu finden, das Zentrum des ersten, und richten Sie sich so, dass sein Mittelpunkt ist in der gleichen x-position. Ich sehe alignLeft, alignRight, alignTop, and alignBaseline
, aber kein Zentrum. Ist das möglich zu tun, ohne zu codieren, eine Marge zu scoot das zweite layout über einige?
Hier ist ein grobes Beispiel, was ich versucht bin zu Ende mit der blauen bar wäre das erste layout, und das rote Feld wäre das zweite layout. Ich weiß, dass ich könnte, wickeln Sie Sie beide in einem anderen RelativeLayout
hat, dass die Größen gleich "wrap_content"
und verwenden Sie dann centerHorizontal="true"
für die zweite. Aber ich würde wirklich lieber, lassen Sie beide als Kinder von meinem Haupt-layout (würde ich einige änderungen an der Art und Weise bestimmte Teile meiner app arbeiten, wenn ich Ihnen die Kinder, die von einem separaten layout. Die versuche ich zu vermeiden.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie können legen Sie die Breite der übergeordneten layout "wrap_content" Sie konnte dann beide Kinder layouts center
Manchmal können Sie festlegen
alignLeft
undalignRight
um die gewünschte Ansicht aus und dann verwenden Sie die Schwerkraft, die auf das element, das Sie möchten zentriert.Beispiel:
Wenn die Komponente nicht eine
TextView
(oder eine Ansicht, wo Sie brauchen nicht den hintergrund), können Sie dann wickeln Sie es in einFrameLayout
mit den oben genannten Eigenschaften.Diese Weise, der Ansicht von unten wird ein Rahmen mit der gleichen Breite wie die Obere, aber innen wird es sein, eine Ansicht, zentriert auf der Breite.
Natürlich funktioniert dies nur, wenn Sie wissen, welche ist die größere Ansicht. Wenn nicht, wie Laranjeiro beantwortet, wickeln beide Inhalte in ein anderes layout mit zentriert Schwerkraft.
Die einzige Lösung, die funktionierte, war für mich wickeln Sie beide Komponenten in einem FrameLayout mit der dimension der größeren Komponente und die zweite Komponente in der Mitte des FrameLayout mit der Eigenschaft
Für Texte, die ich mit diesem f.e für ein vertikal-mittig ausgerichtet ist:
Nur set: