FlexTable
レイアウト上のバグ
FlexTableには非常に大きなバグがある。しかし、FlexTableの構造上、不可避のものなので「仕様」と言ってもよいかもしれない。
例えば以下のコードを実行すると、Bはなぜか2列目にはならず、三列目になってしまう。 つまり、(0,0)位置のセルのRowSpanを2にすると、二行目の列位置がずれてしまう。
FlexTable table = view.getFlexTable(); table.setText(0, 0, "X"); table.getFlexCellFormatter().setRowSpan(0, 0, 2); table.setText(0, 1, "A"); table.setText(1, 1, "B");
以下のように、後から(0,0)位置のセルを入れても同じ現象になる。
FlexTable table = view.getFlexTable(); table.setText(0, 1, "A"); table.setText(1, 1, "B"); table.setText(0, 0, "X"); table.getFlexCellFormatter().setRowSpan(0, 0, 2);
これは、実際に生成されるtableタグでの解釈と、FlexTableでのセル位置指定にズレがあるからである。 例えば、上の例の場合、いずれも
<tr> <td rowspan="2">X</td> <td>A</td> </tr> <tr> <td></td> <td><B</td> </tr>
というタグが生成される。FlexTable側としては指示された場所にデータを入れているつもりだろうが、 tableタグの解釈としては、これはプログラマの意図とは異なるものになってしまう。 つまり、AとBは同じ列にはならない。