我正在我的libgdx游戏中制作成就屏幕。我想将我的桌子在scrollPane中对齐到顶部,现在它是垂直和水平居中的,我不知道为什么。我尝试创建新行时使用.top()
方法无效。
stage = new Stage();
Gdx.input.setInputProcessor(stage);
outerTable = new Table();
innerTable = new Table();
innerTable.setFillParent(true);
for(int i=0;i<score_bound; i++){
if(i<score_state){
innerTable.row().width(achie_width).height(achie_height).top();
innerTable.add(new Image(ltm.assets.score_textures[i]));
}else{
innerTable.row().width(achie_width).height(achie_height).top();
innerTable.stack(new Image(ltm.assets.score_textures[i]),new Image(ltm.assets.kurtyna));
}
}
for(int i=0;i<letin_bound; i++){
if(i<letin_state){
innerTable.row().width(achie_width).height(achie_height).top();
innerTable.add(new Image(ltm.assets.letin_textures[i]));
}else{
innerTable.row().width(achie_width).height(achie_height).top();
innerTable.stack(new Image(ltm.assets.letin_textures[i]),new Image(ltm.assets.kurtyna));
}
}
scrollPane = new ScrollPane(innerTable);
outerTable.setPosition(0, 0);
outerTable.setSize(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
outerTable.debug();
outerTable.add(scrollPane).fill().expand();
stage.addActor(outerTable);
答案 0 :(得分:0)
我今天遇到了同样的问题,并在这里碰到过,所以最好还是在这里发布答案,以防有人还在寻找答案。
@peterSweter说top()不起作用,@ Rara的建议与调用top相同。
获得类似于顶部对齐的唯一方法(仅在innerTable较小时才有意义)是通过在其周围添加空元素来增加大小,因此传递给ScrollPane的表的位置为至少与scrollPane相同。
我只是将另一个Table包裹在我的innerTable引用周围。 (658是我用于ScrollPane的固定高度)
Table spacingTable = new Table();
spacingTable.setHeight(Math.max(innerTable.getHeight(), 658));
spacingTable.add(innerTable);
if (innerTable.getHeight() < 658) {
spacingTable.row();
spacingTable.add().expandY();
}
ScrollPane scroll = new ScrollPane(spacingTable, skin);
答案 1 :(得分:0)
为了实现所需的功能,可以将表包装在另一个表中,并将该表用于ScrollPane。请注意,将表添加到容器表时,需要在底部和右侧添加一些可增长的空单元格,以便将其“推”到左上角(尽管我相信您也可以只使用containerTable.add (myTable).top()。left()-但尚未进行实际测试)。 当然,这比使用硬编码高度的second解决方案好得多。事实是,您通常希望将滚动窗格添加为可增长(.grow()),因此固定的高度/宽度是无用的。