Tôi đã gặp một số vấn đề với rowspan, trong trường hợp TableRow, Textview, v.v., được tạo bằng mã. Ngay cả khi câu trả lời Onimush có vẻ là tốt, nó không hoạt động với giao diện người dùng được tạo ra.
Dưới đây là một đoạn mã mà .... không làm việc:
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);
Mã này có vẻ là OK, nhưng khi bạn đạt đến init của "the_params" nó trả về NULL.
Ở đầu bên kia, mã này hoạt động giống như một nét duyên dáng:
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);
Sự khác biệt duy nhất là tôi đẩy TextView bên trong TableRow trước khi thiết lập khoảng thời gian. Và trong trường hợp này, nó hoạt động. Hy vọng điều này sẽ giúp một ai đó!
Imho, tôi cố gắng làm điều này tốt hơn. Ở đây câu trả lời: http://stackoverflow.com/a/18682293/1979882 – Vyacheslav
Đối với hồ sơ, lưu ý rằng một TableLayout về bản chất là một LinearLayout. Điều đó có nghĩa là bạn có thể thêm trực tiếp bất kỳ đứa trẻ nào. Vì vậy, đối với một khung nhìn toàn bộ cột, bạn có thể bỏ qua TableRow. – ralfoide