Android table layout formatting problems

30,654

Solution 1

Add android:stretchColumns and android:shrinkColumns to the TableLayout element:

<TableLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:stretchColumns="1"
  android:shrinkColumns="1">

The 1 values are the columns you want the changes to occur. You can specify more that one value like this:

android:stretchColumns="0,1"

or if you want the changes to happen to all you columns like this:

android:stretchColumns="*"

Please look here for detailed information: http://android-pro.blogspot.com/2010/02/table-layout.html

Solution 2

i had the same problem with my app and found the following solution:

<TableLayout 
   android:shrinkColumns="0"
   android:stretchColumns="1" 
   android:layout_width="match_parent"
   android:layout_height="wrap_content">
</TableLayout>

This works fine with 2 Columns.

Solution 3

I had the same problem and solved it by adding

android:stretchColumns="0"

to the TableLayout element and setting

android:layout_width="0dp"

on the TextView that was too long.

Solution 4

inside table layout use shrinkColumns property for columns you want them to be allowed to shrink for fitting

easiest way is:

<TableLayout
android:shrinkColumns="*"/>

to shrink all columns or you can write instead of " *" ,the column indices you want to shrink , which in your case will be

<TableLayout
android:shrinkColumns="0,1"/>

note that column indices start from zero , so the latest code allows first (index=0) and second (index =1) columns to shrink.

Solution 5

There is temporary fix, do:

   android:stretchColumns = " (number of actual col) - 1 "

No solution here worked in my case.

Share:
30,654

Related videos on Youtube

sammybar
Author by

sammybar

Updated on May 17, 2021

Comments

  • sammybar
    sammybar almost 3 years

    I can not get my TableLayout to fit inside the screen when the text cell is large, despite the text wraps inside the cell.

    This is my TableLayout. A simple two-rows, two-columns table. Left column cells are multiline. If the text of one of these cell is large enought to break in two lines, the column is stretched to fill the entire screen and the right columns is pushed out of the screen.

    Why? How can I force the full table to stay inside the screen? Any hint is welcomed.

    My TableLayout is the following:

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myTableLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TableRow>
        <TextView
            android:text="Account 4 with a very large name to see if it breaks  on two or more lines"
            android:singleLine="false"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </TextView>
        <TextView
            android:text="$400.00"
            android:gravity="right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </TextView>
    </TableRow>
    
    <TableRow>
        <TextView
            android:text="Account 5"
            android:singleLine="false"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </TextView>
        <TextView
            android:text="$400.00"
            android:gravity="right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </TextView>
    </TableRow>
    
    </TableLayout>
    

    The code to display the layout is basic:

    public class AccountBrowserTest 
        extends Activity
    {
        public void onCreate(Bundle savedInstanceState) 
        {    
            super.onCreate(savedInstanceState);
    
            this.setContentView(R.layout.accountbrowser_test);
    
        }
    } 
    
  • Paul
    Paul about 12 years
    and what exactly this means ? how did you figure out that this is the solution?