从特定的CodenameOne表单中移除TitleArea

3
我有一个闪屏和登录表单需要全屏显示,不需要任何工具/菜单/标题栏。表单上方有一条我认为是TitleArea的栏条。
场景与https://groups.google.com/forum/#!topic/codenameone-discussions/2sgVfNYU9rk中所述的情况完全相同。
在那次讨论中,Shai建议将TitleArea UIID透明度设置为0作为解决方案。由于我只想在这些特定的表单上使标题区域不可见,因此创建了一个新的UIID TitleAreaTransparent,其背景透明度为0,并按以下方式实例化SplashScreen表单:
    SplashScreen f = new SplashScreen(theme);
    Container tArea = f.getTitleArea();
    tArea.setUIID("TitleAreaTransparent");
    f.show();

这确实会使工具栏消失,但我有两个问题。
1)即使TitleArea是透明的,它仍然在表单上占用一些空间。在这种特殊情况下无所谓,但还有其他情况,我可能需要使用整个屏幕,我希望完全消除该组件。如何正确做到这一点?
2)javadoc说getTitleArea()已弃用,但有一些替代方法,例如命令行为(通过Display或主题常量)我进行了一些挖掘,但未能找到任何可以说明如何完成我需要做的事情的东西。更改TitleArea组件的UIID的正确方法是什么?
1个回答

1
在这种方法中,getTitleArea()仍然是必要的。如果您不设置标题,则标题区域应为0,但状态栏仍将占用空间,因为它将推动UI向下,因此它不会在iOS状态栏区域下呈现。
您可以通过全局禁用StatusBar UIID(不建议)或通过类似于以下内容的方式在Form子类中禁用它:
@Override
protected Component createStatusBar() {
    Component c = super.createStatusBar();
    c.getUnselectedStyle().setPadding(0, 0, 0, 0);
    return c;
}

我没有设置标题(title =“”),但TitleArea仍然存在且可见。当我使用您在此处提供的代码片段时,它仍然可见,但高度约为此图像中所示的一半:http://imgur.com/a/79aP3 - SolStack
你还在使用 getTitleArea().setUIID("Container") 吗? - Shai Almog
我将 getTitleArea().setUIID("Container") 移除并替换为您提供的代码。您是说我应该一起使用它们吗? - SolStack
在你的回答中,你说“你可以禁用它”,你是指“状态栏仍会占用空间,因为它会将UI向下推,所以它不会在iOS状态栏区域下渲染”吗?如果是这样,那么我应该理解使用你上面的代码片段会导致UI在iOS状态栏下呈现? - SolStack
是的,你应该将它们一起使用。是的,上面的代码将导致状态栏不再占用空间。 - Shai Almog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接