【发布时间】:2016-03-07 11:27:39
【问题描述】:
我目前正在用 Codename One 编写一个简单的游戏,我希望用户选择国家。
我希望将国家显示为可滚动列表中的图像。
我有一个 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);
}
我知道我做错了什么。 也许我不应该使用 Container,或者我应该用另一种方式填充孩子,或者为孩子使用另一个类。 但是我找不到任何信息是什么问题。
编辑
我尝试了 Shai Almog 的建议,即仅使用 setScrollableX(),但这并没有按我的需要工作。 Container 已移至左上角且不可滚动。
首先,我需要此滚动条位于特定位置并具有特定大小,因此我将 CoordinateLayout 用于容器的父级。 这就是为什么我将 setX()、setY() 和 setPreferredW() 与 setPreferredH() 一起使用。
【问题讨论】:
标签: android ios codenameone