Search code examples
androidxmlandroid-layoutandroid-layout-weight

Tablelayout weighted button in relativelayout


I have a tablelayout with weights for a 4 button grid. The problem is that I have on button that is in a relative layout in a tablerow which doesn't format correctly. If I have the height set to wrap content the result is this:

If I set it to fill_parent:

I can't get the button to properly fill its height weight. If I take out the relative layout it works fine. I've tried putting both in separate linear layouts to no avail.

Here is my code:

 <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/linearLayout"
            android:layout_margin="10dp"
            android:weightSum="2" >

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:minHeight="100dp" >

                <Button
                    android:id="@+id/searchBtn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:background="@drawable/yellow_btn"
                    android:minHeight="100dp"
                    android:text="Search"
                    android:textColor="#1d357d"
                    android:textSize="20dp"
                    android:textStyle="bold" />

                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:minHeight="100dp" >

                    <Button
                        android:id="@+id/savedBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:background="@drawable/yellowds"
                        android:minHeight="100dp"
                        android:text="Saved Searches"
                        android:textColor="#1d357d"
                        android:textSize="20dp"
                        android:textStyle="bold" />

                    <TextView
                        android:id="@+id/newItemsOverlay"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignLeft="@+id/savedBtn"
                        android:layout_alignTop="@+id/savedBtn"
                        android:background="@drawable/badge_circle"
                        android:text="10"
                        android:textColor="#FFF"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </RelativeLayout>
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginTop="30dip"
                android:layout_weight="1"
                android:minHeight="100dp" >

                <Button
                    android:id="@+id/checkNowBtn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:background="@drawable/yellowds"
                    android:minHeight="100dp"
                    android:text="Check Now"
                    android:textColor="#1d357d"
                    android:textSize="20dp"
                    android:textStyle="bold" />

                <Button
                    android:id="@+id/settingsBtn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:background="@drawable/yellowds"
                    android:minHeight="100dp"
                    android:text="Settings"
                    android:textColor="#1d357d"
                    android:textSize="20dp"
                    android:textStyle="bold" />
            </TableRow>
        </TableLayout>

Solution

  • Try with this :

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    
        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </LinearLayout>
    
        <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/linearLayout"
            android:layout_margin="10dp"
            android:weightSum="2" >
    
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:minHeight="100dp" >
    
                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5" >
    
                    <Button
                        android:id="@+id/searchBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:background="#cccccc"
                        android:minHeight="100dp"
                        android:text="Search"
                        android:textColor="#1d357d"
                        android:textSize="20dp"
                        android:textStyle="bold" />
                </RelativeLayout>
    
                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5" >
    
                    <Button
                        android:id="@+id/savedBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:background="#cccccc"
                        android:minHeight="100dp"
                        android:text="Saved Searches"
                        android:textColor="#1d357d"
                        android:textSize="20dp"
                        android:textStyle="bold" />
    
                    <TextView
                        android:id="@+id/newItemsOverlay"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignLeft="@+id/savedBtn"
                        android:layout_alignTop="@+id/savedBtn"
                        android:background="#ff0000"
                        android:text="10"
                        android:textColor="#FFF"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </RelativeLayout>
            </TableRow>
    
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginTop="30dip"
                android:layout_weight="1"
                android:minHeight="100dp" >
    
                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5" >
    
                    <Button
                        android:id="@+id/checkNowBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:background="#cccccc"
                        android:minHeight="100dp"
                        android:text="Check Now"
                        android:textColor="#1d357d"
                        android:textSize="20dp"
                        android:textStyle="bold" />
                </RelativeLayout>
    
                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5" >
    
                    <Button
                        android:id="@+id/settingsBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:background="#cccccc"
                        android:minHeight="100dp"
                        android:text="Settings"
                        android:textColor="#1d357d"
                        android:textSize="20dp"
                        android:textStyle="bold" />
                </RelativeLayout>
            </TableRow>
        </TableLayout>
    
    </RelativeLayout>
    

    This will solve your problem.

    Thanks.