从特定的代码名称表单中删除 TitleArea

Removing TitleArea from a specific codenameone form

我有一个需要显示的初始屏幕和登录表单 full-screen 没有任何 tool/menu/title bars.The 表单正在显示,我相信屏幕顶部附近有一个栏成为 TitleArea.

场景与https://groups.google.com/forum/#!topic/codenameone-discussions/2sgVfNYU9rk

中描述的相同

在那次讨论中,Shai 推荐了一种将 TitleArea UIID 透明度设置为 0 的解决方案。因为我只希望标题区域在这些特定表单上不可见,所以我创建了一个背景透明度为 0 的新 UIID TitleAreaTransparent 和实例化 SplashScreen 表单如下:

    SplashScreen f = new SplashScreen(theme);
    Container tArea = f.getTitleArea();
    tArea.setUIID("TitleAreaTransparent");
    f.show();

这确实会使栏消失,但我有两个顾虑。

1) 即使 TitleArea 是透明的,它仍然占用了窗体上的一些空间。在这种特殊情况下,这无关紧要,但在其他情况下,我可能需要使用整个屏幕,我想简单地完全消除该组件。这样做的正确方法是什么?

2) javadoc 说 getTitleArea() 已被弃用,但 有一些替代方法,例如命令行为(通过显示或主题常量) 我做了一些挖掘并且是无法找到任何可以阐明如何做我需要做的事情的东西。更改 TitleArea 组件的 UIID 的正确方法是什么?

在这个方法中getTitleArea()仍然是必不可少的。如果您不设置标题,标题区域应该为 0,但状态栏仍将占据 space,因为它会将 UI 向下推,因此它不会在 iOS 下方撕裂状态栏区域。

您可以通过全局设置 StatusBar UIID 样式(不推荐)或在您的 Form 子类中使用类似的样式来禁用它:

@Override
protected Component createStatusBar() {
    Component c = super.createStatusBar();
    c.getUnselectedStyle().setPadding(0, 0, 0, 0);
    return c;
}