androidandroid-tablelayoutcolumnspan

Layout Span - table layout android


I'm using tableLayout (android) to create tables with 5 columns I need to span column inside table , but can't using layout-span correctly to become table like this :

|column 1 | column 2 | column 3 | column 4 | column 5 | |column 11 | column 22 | column 33 |

my code :

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  1"
                android:id="@+id/q5"
                android:layout_column="0"
                android:textSize="12sp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  2"
                android:id="@+id/q4"
                android:textSize="12sp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  3"
                android:id="@+id/q3"
                android:textSize="12sp"
                android:layout_columnWeight="1"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  4"
                android:id="@+id/q2"
                android:textSize="12sp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  5"
                android:id="@+id/q1"
                android:textSize="12sp"
                android:layout_weight="1"
                android:layout_gravity="center"
                android:textAlignment="center"
                android:background="@drawable/s" />
        </TableRow>





        <TableRow>

           <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="column  11"
                android:id="@+id/textView10"
                android:textSize="16sp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="column  22"
                android:layout_span="3"
                android:id="@+id/textView12"
                android:textSize="16sp"
                android:layout_gravity="center"
                android:textAlignment="center"
                android:layout_weight="1"
                android:background="@drawable/s" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:text="column  33"
                android:id="@+id/textView11"
                android:textSize="16sp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:textAlignment="center"
                android:background="@drawable/s" />


        </TableRow>

a problem is : column 11 and column 33 is change width so a layout design is bad .. please help me what can I do ?


Solution

  • Try this.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sanjaysah.tablelayout.MainActivity">
    
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 1"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 2"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 3"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 4"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 5"
                android:textColor="@android:color/white" />
        </TableRow>
    
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 11"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:layout_span="3"
                android:background="@drawable/row_background"
                android:gravity="center"
                android:padding="5dp"
                android:text="column 22"
                android:textColor="@android:color/white" />
    
            <TextView
    
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:background="@drawable/row_background"
                android:padding="5dp"
                android:text="column 33"
                android:textColor="@android:color/white" />
    
        </TableRow>
    </TableLayout>
    

    This will render a tablelayout that you are looking for.