代号One-即使没有任何余量,组件之间也会产生像差

时间:2019-04-25 16:02:05

标签: styles codenameone

我在组件之间遇到一个或两个像素的绘图像差,背景在其中发光。所涉及的组件的边距为0,因此不应有任何穿透的空隙。

为了说明:一个简单的具有背景图像的表单,一个带有白色背景的内容容器和工具栏的南部组件,都具有一个圆形的图像(也为白色),以使工具栏和内容之间在视觉上具有吸引力: enter image description here

从第二个图中可以看出,在特殊情况下,工具栏和内容容器之间会画一条细线,这会带来可怕的视觉冲击。

要重现:

  1. 从工具栏的顶部向下滑动到内容容器时,该行会短暂出现,同时滑过白色的圆形图像。
  2. 从内容容器向上滑动到工具栏时,该行会出现并保持不变。

我以为这与未选择/选择/按下的UIID样式有关,但是我将未选择的样式复制到了相同的空白处,但空白没有改变。

这是可复制的最少代码:

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form(new BorderLayout());
    addToolbar(hi);
    addContent(hi);
    hi.show();
}

private void addToolbar(Form hi) {
    Toolbar toolbar = hi.getToolbar();
    toolbar.setUIID("Container");
    toolbar.setTitle("Title");

    Label divider = new Label(" ", "ToolbarDivider");
    toolbar.add(BorderLayout.SOUTH, divider);

    Label spacer = new Label(" ", "ToolbarSpacer");
    toolbar.add(BorderLayout.EAST, spacer);
}

private void addContent(Form hi) {
    Container whiteContainer = new Container();
    whiteContainer.getAllStyles().setBgColor(0xffffff);
    whiteContainer.getAllStyles().setBgTransparency(255);
    whiteContainer.add(new Label("content"));

    hi.add(BorderLayout.CENTER, whiteContainer);
}

注意:ToolbarDivider是一种样式,可将白色的圆角图像作为背景,且边距和填充为零。工具栏空格键的顶部具有一个空白,它被添加到工具栏的右侧以使其更大且更具吸引力(我的应用程序在工具栏中显示了更多内容)。

对于为什么出现此行的任何帮助,将不胜感激。

0 个答案:

没有答案