我目前正在使用Codename One编写一个简单的游戏,我希望用户选择国家。Codename One BoxLayout scroll
我希望这些国家在滚动列表中表现为图像。
我在X轴上有一个带BoxLayout的容器,并且里面有图标的按钮。
问题是,不适合容器的列表项正在裁剪,并且在应该出现时未绘制。此外,当手指位于未拉伸物品上方时,容器不可滚动。
And here how it looks like after scroll
这里是源:
final Container cont_nations = new Container(new BoxLayout(BoxLayout.X_AXIS));
int buttons_width = dim_nation_man.getWidth() * 5;
cont_nations.setPreferredW(buttons_width + 50);
cont_nations.setPreferredH(dim_nation_man.getHeight());
cont_nations.setX(Main.screenWidthHalf - buttons_width/2);
cont_nations.setY(choiseImage.getY() + dim_choise.getHeight() + Main.cellSize * 0);
cont_nations.setScrollSize(new Dimension(man_size * imgName_nations.length, man_size));
cont_nations.setScrollable(true);
//cont_nations.setScrollVisible(false);
addComponent(cont_nations);
for (int i = 0; i < img_nations.length; i++) {
final Button btn_nation = new Button(img_nations[i][0].image);
cont_nations.addComponent(btn_nation);
}
我知道我做错了。 也许我不应该使用容器,或者我应该用另一种方式用孩子填充它,或者为孩子使用另一个班级。 但我找不到任何信息出了什么问题。
编辑
我试过夏嘉曦阿尔莫格的建议,使用setScrollableX()而已,但我需要一个没有工作。 容器移动到左上角并且不可滚动。
起初,我需要这个卷轴位于特定的位置并具有特定的大小,所以我使用CoordinateLayout作为Container的父级。 这就是为什么我用setPreferredH()使用setX(),setY()和setPreferredW()。
我无法检查它,所以我现在稍后会做,但我记得,没有工作。 容器没有滚动,因为它的大小取决于它的孩子。 – geNia
图像应占用空间,滚动只会在需要时触发。这是它应该如此工作的方式,从此开始并继续。 –
我试过了你的建议,但没有奏效。看到我的编辑问题。 – geNia