Codename One - рисование аберраций между компонентами даже без каких-либо полей - PullRequest
1 голос
/ 25 апреля 2019

Я испытываю аберрацию рисунка в один или два пикселя между компонентами, при которой фон просвечивает. Поля участвующих компонентов равны 0, поэтому не должно быть пробела, что-либо просвечивающее.

Для иллюстрации: простая форма с фоновым изображением, контейнер содержимого с белым фоном и южный компонент панели инструментов имеют округленное изображение, также белого цвета, для визуально привлекательного разделения между панелью инструментов и содержимым: enter image description here

Как видно на втором рисунке, в особых случаях между панелью инструментов и контейнером содержимого проходит тонкая линия, что оказывает ужасное визуальное воздействие.

Воспроизвести:

  1. при перемещении сверху по панели инструментов вниз в контейнер содержимого на короткое время появляется линия, проводя по белому закругленному изображению.
  2. при перемещении из контейнера содержимого вверх на панель инструментов, строка появляется и остается.

Я предположил, что это как-то связано с невыбранными / выбранными / нажатыми стилями UIID, однако я везде скопировал невыбранные стили с одинаковым полем 0, и это ничего не изменило.

вот минимальный код для воспроизведения:

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 - это стиль, в котором округленное изображение белого цвета имеет фон с нулевыми полями и отступами. Панель инструментов Spacer имеет верхнее поле, которое добавляется справа от панели инструментов, чтобы сделать его больше и привлекательнее (в моем приложении больше контента для отображения на панели инструментов).

Любая помощь в том, почему эта строка встречается, будет принята.

...