Question

I have a TableLayout inside a RelativeLayout with android:layout_centerInParent="true" as one of its attributes, but it is not being centered vertically.

Here is my xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/line_drawing_relativelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TableLayout 
        android:id="@+id/activity_linking_tl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" >

        <TableRow
            android:id="@+id/table_row_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="1dp" >

            <com.xx.myview
                android:id="@+id/id_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <com.xx.myview
                android:id="@+id/id_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </TableRow>
    </TableLayout>

 <ImageButton
        android:id="@+id/line_drawing_b_restart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:padding="22dp"
        android:src="@drawable/ic_restart" >
    </ImageButton>

<!-- There are more views/widgets here -->

</RelativeLayout>

How would I solve this?

Was it helpful?

Solution 3

The problem was that I had android:layout_below="xxx" as well (for some reason not shown in the code I posted), which overrode the centering I was trying to achieve. Removing this solved it. Obvious really.

OTHER TIPS

Are you sure that the RelativeLayout is taking up as much space as you think? It might be that the TableLayout is centered, but that the RelativeLayout is wrapping content, so it ends up being centered but in a smaller container than you expected. It's hard for me to gauge without seeing the RelativeLayout portion of the XML.

One way to check your layouts is to use the developer option "show layout bounds":

Developer options with "show layout bounds" enabled

It will give you a better idea of how your layouts are being constructed. If you are running an older phone without this developer option, I would just start setting flat colors for View backgrounds (e.g. android:background="#F00").

Try setting parent RelativeLayout width and height to match_parent.

and add this to your TableLayout

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top