我正在准备一个使用 Boxlayout.y 中的容器的 Android 应用程序。
使用here中的代码示例时,在 x 方向滚动容器内容效果非常好。
但是,当我更改代码以使用 y 布局时,容器会失去滚动能力,并且仅当我点击表单和容器外部或不点击内部的任何组件时才会滚动。
有趣的是,只有当我向容器添加 UIID 时,y 滚动的问题才会激增。
Container containerBase = new Container(new BoxLayout(BoxLayout.Y_AXIS));
Form formSelect = new Form(new BoxLayout(BoxLayout.Y_AXIS));
int[] colors = { 0xffff0000, 0xff00ff00, 0xff0000ff, 0xff000000 };
containerBase.setScrollableY(true);
containerBase.setUIID("ContainerBase"); `culprit seems to be here`
for(int iter = 0 ; iter < 100 ; iter++) {
containerBase.add(new Button(Image.createImage(100, 50, colors[iter % colors.length]), "test"));
}
我错过了什么?
我使用 Arch,使用 Eclipse 和 Maven。
您正在做的是嵌套滚动,仅支持不同的轴。在桌面应用程序上,您可以将滚动条放置在任何位置,但 Codename One 不支持这一点。
在触摸设备上,您可以滑动层次结构中的任何组件以沿特定方向滚动。如果您有两个可滚动的 Y 容器,一个在另一个内,我们无法知道要滚动哪一个。由于滚动的工作方式,它也使得尺寸计算变得不可能。
由于默认情况下父窗体在 Y 轴上可滚动,因此不需要使子容器可滚动。它们将隐式滚动。请注意,
BorderLayout
隐式禁用 Form
上的滚动,使用它可以解决该问题。
删除
containerBase.setScrollableY(true);
也可以。