gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:35:45 25 4
gpt4 key购买 nike

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

当用户点击任何 TextField 时,在编辑它的情况下,键盘显示并放置 BorderLayout.SOUTH 的内容,即。键盘上方的按钮,隐藏了一些字段。我希望按照 IOS 将按钮隐藏在键盘下方。

因为我才刚刚意识到会发生这种情况,所以我现在有一些屏幕,如果我有一定的容器和字段组合,它不会发生,一些屏幕会挤压我的文本字段,而有些屏幕会只是隐藏了我希望用户看到的另一个字段。

我已附上一个显示此内容的基本页面。请注意,这在模拟器上很好,因为没有显示键盘。非常感谢

   public class Keyboard {
private Form currentForm = new Form("", new BorderLayout());
public void buildPage() {
Container c = new Container(new BorderLayout());
Container y = new Container(new BoxLayout(BoxLayout.Y_AXIS));
y.setScrollableY(true);

y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());
y.add(new TextField());

c.add(BorderLayout.CENTER, y);
c.add(BorderLayout.SOUTH, buildButton());

currentForm.add(BorderLayout.CENTER, c);
currentForm.getAllStyles().setBgColor(0x65363);
currentForm.getAllStyles().setBgTransparency(255);
currentForm.setFormBottomPaddingEditingMode(true);
currentForm.show();
}
private Component buildButton() {
Button button = new Button("Hide this button");
return button;
}
}

最佳答案

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

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

如果您不想要这种行为,您需要使用可滚动的容器。不幸的是,当 UI 可滚动时,很难实现将按钮放在屏幕底部等功能。

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

关于android - 在 Codenameone 中编辑文本字段时,BorderLayout.SOUTH 组件始终显示在 Android 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com