Question

I'm experiencing the same issue as this one. Unfortunately, the answer to that one does not work for me.

I know the rows are are added to the table, I can see the number of rows grow in logcat.

But I don't see them on my screen.

Investigated refresh (invalidate), color, dimensions, layout params, ...

... and ran out of ideas

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnAddRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add row" />

    <TableLayout
        android:id="@+id/tableLayoutInventory"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:shrinkColumns="*"
        android:stretchColumns="*" >
            <TableRow
            android:id="@+id/tableRowTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/headerCol1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="ID"
                    android:textSize="16dp" />

                <TextView
                    android:id="@+id/headerCol2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Titre"
                    android:textSize="16dp" />

            </TableRow>

    </TableLayout>

</LinearLayout>

Code:

public void onClick(View v) {
TableRow row = new TableRow(this);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

TextView tv = new TextView(this);
tv.setText("ID, row "+rownb);
tv.setHeight(16);
tv.setTextSize(16);
tv.setTextColor(Color.RED);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
row.addView(tv);

TextView tv2 = new TextView(this);
tv2.setHeight(16);
tv2.setTextSize(16);
tv2.setTextColor(Color.RED);
tv2.setText("Title, row "+rownb);
tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
row.addView(tv2);

table_layout.addView(row);
table_layout.requestLayout();
table_layout.invalidate();
table_layout.postInvalidate();
Log.i ("LIMA","Add row. There are now "+table_layout.getChildCount()+" rows");

}

Was it helpful?

Solution

Remove those LayoutParamson the views you're adding in the table rows

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top