使用scene2d.ui创建交替行颜色的表格?

4

我创建了一个scene2d.ui Table,想要交替改变每行的背景颜色。

我查看了各种表格和单元格方法,但似乎没有明显的方法来做到这一点。

这是否可行?如果是,最简单的方法是什么?

1个回答

9

我曾使用只有一个有色像素的可绘制背景。虽然这远非优雅的方法,但我并没有找到更简单的方式。

//Pixmap with one pixel
Pixmap pm1 = new Pixmap(1, 1, Format.RGB565);
pm1.setColor(Color.GREEN);
pm1.fill();

Pixmap pm2 = new Pixmap(1, 1, Format.RGB565);
pm2.setColor(Color.RED);
pm2.fill();

dialogueWindow = getWindow();

dialogueWindow.setTitle("New Game");
// The table that will have the green color 
Table row1 = new Table(mySkin);
row1.add(nameStation);
row1.add(nameStationField);
row1.setBackground(new TextureRegionDrawable(new TextureRegion(new Texture(pm1))));
dialogueWindow.add(row1);
dialogueWindow.row();

// The table that will have  the green color
Table row2 = new Table(mySkin);
row2.setBackground(new TextureRegionDrawable(new TextureRegion(new Texture(pm2))));
row2.add(cancel).size(120, 60);
row2.add(ok).size(100, 60);

dialogueWindow.add(row2).fillX();
dialogueWindow.row();

谢谢。我曾经考虑过这个问题,但很难相信那是最好的方法。如果他们只是在行对象中添加了一个setBackgroundColor方法,那将更加直观。 - eby
@eby 我同意,这会创建两个单独的表格,因此无法正确对齐列。我还想为某一列添加背景,因为我通过将表格传递给动态创建它们的方法来添加行,而我不想固定列宽。我目前唯一能想到的方法是为每个单元格创建一个堆栈,并在后面添加可绘制的内容。但是,如果您想要像某种边框之类的东西,您需要3个不同的图像(左、中和右)。 - Madmenyo
使用Format.RGBA8888代替Format.RGB565以便能够处理透明度。 - Benjamin Lucidarme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接