在Codenameone中编辑文本字段时,BorderLayout.SOUTH组件始终在Android上显示

时间:2018-09-10 22:28:44

标签: android codenameone

我在Android上有问题,但在IOS上没有问题。 我有一个基本的屏幕,其中在一个可滚动的Y_AXIS容器内有10个TextField;我把它放在下面的BorderLayout.CENTRE容器上。 然后,我在同一基本容器中但在BorderLayout.SOUTH中有一个Button。

当用户单击任意TextField进行编辑时,将显示键盘并放置BorderLayout.SOUTH的内容。键盘上方的按钮隐藏了一些字段。我希望按IOS将按钮隐藏在键盘下方。

由于我只是刚刚意识到这种情况的发生,所以现在我有了一些屏幕,如果我混合使用容器和字段,则不会出现这种情况;某些屏幕会将文本字段压扁,还有一些屏幕只是在我希望用户看到的下方隐藏了另一个字段。

我已经附加了显示此内容的基本页面。注意,由于没有显示键盘,这在模拟器上很好。 非常感谢

build/jacocoHtml

1 个答案:

答案 0 :(得分:1)

将UI设置为边框布局时,将隐式禁用滚动。这样很好,因为每个轴的层次结构中只能有一个可滚动元素。

在iOS上,当键盘打开时,滚动区域会增加。由于按钮从滚动区域中排除,因此它始终可见。同样,这是设计使然。它可以在视图中保留“确定”按钮,这可能是所需的行为。

如果您不希望出现这种情况,则需要使用可滚动容器。不幸的是,一旦UI可以滚动,就很难实现将按钮放在屏幕底部的功能。

当UI可滚动时,我们的系统很难检测屏幕底部,因为层次结构大小可以动态更改,并且底部可以在任何地方。这可以通过新的GUI构建器的分层布局来实现,该布局非常精细。