Ho avuto qualche problema con la rowspan, in caso di TableRow, TextView e così via, generato con il codice. Anche se la risposta di Onimush sembra essere buona, non funziona con l'interfaccia utente generata.
Ecco un pezzo di codice che .... non funzionano:
TableRow the_ligne_unidade = new TableRow(this);
the_ligne_unidade.setBackgroundColor(the_grey);
TextView my_unidade = new TextView(this);
my_unidade.setText(tsap_unidade_nom);
my_unidade.setTextSize(20);
my_unidade.setTypeface(null, Typeface.BOLD);
my_unidade.setVisibility(View.VISIBLE);
TableRow.LayoutParams the_param;
the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams();
the_param.span = 3;
my_unidade.setLayoutParams(the_param);
// Put the TextView in the TableRow
the_ligne_unidade.addView(my_unidade);
Il codice sembra essere OK, ma, quando si raggiunge l'init di "the_params" restituisce NULL.
Dall'altra parte, questo codice funziona come un fascino:
TableRow the_ligne_unidade = new TableRow(this);
the_ligne_unidade.setBackgroundColor(the_grey);
TextView my_unidade = new TextView(this);
my_unidade.setText(tsap_unidade_nom);
my_unidade.setTextSize(20);
my_unidade.setTypeface(null, Typeface.BOLD);
my_unidade.setVisibility(View.VISIBLE);
// Put the TextView in the TableRow
the_ligne_unidade.addView(my_unidade);
// And now, we change the SPAN
TableRow.LayoutParams the_param;
the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams();
the_param.span = 3;
my_unidade.setLayoutParams(the_param);
L'unica differenza è che spingo il TextView all'interno del TableRow prima di impostare l'intervallo. E in questo caso, funziona. Spero che questo aiuti qualcuno!
Imho, ho trovato il modo migliore per farlo. Ecco la risposta: http://stackoverflow.com/a/18682293/1979882 – Vyacheslav
Per la cronaca, si noti che un TableLayout è essenzialmente un LinearLayout. Ciò significa che puoi aggiungere qualsiasi bambino direttamente. Pertanto, per una singola visualizzazione di tutte le colonne, è possibile saltare il TableRow. – ralfoide