Search code examples
androidcenterandroid-relativelayoutgravity

RelativeLayout gravity center not working


I'm trying to horizontally center several views in a RelativeLayout that is a base.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:background="@android:color/transparent" >

This isn't working. I have set centerInParent to true for one of the views and that did work. However, I can't use this solution because I have 2 views side by side that need to be centered together. Trying to optimize this so I want to avoid nesting layouts, especially Linear, inside of each other.

Is there something obvious that I'm missing? I thought this attribute is made for this situation.


Solution

  • I answered a similar issue involving three views without using nested ViewGroups.

    https://stackoverflow.com/a/13279846/1011746

    This is tested in API 11.

    For the two view horizontal case:

    <RelativeLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:gravity="center"
      android:background="@android:color/black"
      >
      <Button
        android:id="@+id/apply"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="APPLY"
        android:textSize="20sp"
        />
      <Button
        android:id="@+id/undo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="UNDO"
        android:textSize="20sp"
        android:layout_toRightOf="@id/apply"
        />
    </RelativeLayout>
    

    For the two view vertical case:

    <RelativeLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:gravity="center"
      android:background="@android:color/black"
      >
      <Button
        android:id="@+id/apply"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="APPLY"
        android:textSize="20sp"
        />
      <Button
        android:id="@+id/undo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="UNDO"
        android:textSize="20sp"
        android:layout_below="@id/apply"
        />
    </RelativeLayout>