Как структурировать код CN1 для макета планшета? - PullRequest
0 голосов
/ 19 января 2019

До сих пор я создавал свое приложение Codename One для формата экрана телефона. Существует отдельная форма для главного меню, затем вторая форма со списком элементов, а затем третья форма для редактирования элемента, выбранного из списка. Каждая форма имеет меню переполнения и различные кнопки команд Titlebar. И каждая (расширенная) форма имеет много кода, который реализует функции в форме и разделяет переменные и т. Д.

Однако для использования экрана планшета (iPad) я бы хотел показать главное меню слева от экрана, список элементов посередине и форму редактирования элементов справа. Нечто похожее на скриншот ниже. Похоже, что это типичный макет на планшетах, и он хорошо подходит для моей модели использования приложений.

Однако я не вижу элегантного способа структурирования кода для этого. Я не могу легко объединить список и отредактировать формы в одну форму, и написание совершенно новой формы только для формата планшета было бы большой работой. Я предполагаю, что другие столкнулись с той же проблемой и хотели бы услышать, как вы достигли этого.

PS. Я знаю, что боковое меню можно сделать постоянным, но это решает только часть проблемы, а не способ отображения списка и одновременного редактирования форм.

enter image description here

1 Ответ

0 голосов
/ 20 января 2019

На этот вопрос нет единого ответа, но если вы посмотрите на такие приложения, как Codename One Build , вы заметите, что они адаптируются к этому форм-фактору.

Обычно мы просто используем isTablet(), чтобы адаптировать пользовательский интерфейс в ключевых точках к другому форм-фактору. Одним из элементов является постоянное боковое меню , которое мы включаем в методе init, используя такой код:

if(Display.getInstance().isTablet()) {
    Toolbar.setPermanentSideMenu(true);
}

Боковое меню остается открытым. В коде мы пытаемся использовать Container вместо Form. Это позволяет нам упаковать несколько логических элементов в единый интерфейс для режима планшета.

...