androidandroid-layoutandroid-tablelayout

Android - Dynamic ColSpan not working


I am having two table rows in one of my activity. First row will always contains 2 textview and second might contains one or two textview (it depends on userinput). Whenever I am having one textview in 2nd row, I tried to span it to two columns. I am trying something this

TableRow.LayoutParams param = (LayoutParams)editText.getLayoutParams();
param.span = 2;
txtView.setLayoutParams(param);

But its not working. What happens is, second txtview in first row is pushed out of the screen. So can anyone here tell where i am making mistake?


Solution

  • I made this example, hope it helps you.

     TableLayout table = (TableLayout)findViewById(R.id.table_id_in_xml);
        TableRow row = new TableRow(this);
        TableRow row2 = new TableRow(this);
        TextView col1, col2, col3;        
    
        row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
        row2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
    
        col1 = new TextView(this);
        col2 = new TextView(this);
        col3 = new TextView(this);
    
        col1.setText("col1");
        col2.setText("col2");
        col3.setText("col3");
    
        row.addView(col1);
        row.addView(col2);
        row.addView(col3);
    
        table.addView(row, new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    
        //HERE IS WHAT YOU NEED
        TableRow.LayoutParams params = (TableRow.LayoutParams) row2.getLayoutParams();
        params.span = 3; //amount of columns you will span
    
        col1 = new TextView(this);
    
        col1.setText("span on col1 makes it bigger than the others");
        col1.setLayoutParams(params);
        row2.addView(col1);
    
        table.addView(row2, new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));