我正在 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);
Run Code Online (Sandbox Code Playgroud)
我今天遇到了同样的问题并在这里遇到,所以我不妨在这里发布答案,以防有人仍在寻找答案。
@peterSweter 说 top() 不起作用,@Rara 建议的与调用 top 相同。
实现看起来像顶部对齐的唯一方法(仅当 innerTable 较小时才相关)是通过在其周围添加空元素来增加大小,因此传递给 ScrollPane 的表至少具有相同的大小大小与滚动窗格相同。
我刚刚在我的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);
Run Code Online (Sandbox Code Playgroud)