Codename One: скрыть заголовок (область), но не в строке состояния (iOS & Android) - PullRequest
1 голос
/ 16 марта 2020

У меня есть приложение для iOS и Android. Строка состояния не скрыта. Моя основная форма не имеет заголовка, команды возврата и других команд на панели инструментов. (У всех моих других форм есть команда title и back.) Я хочу скрыть заголовок, потому что мне нужно место. Я обнаружил, что на устройствах iOS работает пустой заголовок (""). Но на устройствах Android это не так; содержимое формы не отображается при первом вызове form.show (). Показывается, если мы приостановим и возобновим приложение. Похоже, что реализации Android нужен непустой заголовок, даже если он скрыт.

Итак, моя реализация:

// we use Toolbar.setGlobalToolbar(true)
public class MainForm extends Form {
    public MainForm() {
        super(""); // hides the title area but not the status bar space on iOS
        if (android()) {
            setTitle(" "); // Android needs non-empty title
            getToolbar().hideToolbar(); // hides the title area; don't use on iOS, it removes the status bar space too
        }
        ...

Это правильная реализация? Я не смог найти никакой документации по этому вопросу.

Редактировать после комментариев ниже:

Я попробовал предложение getToolbar (). SetUIID ("Container") на ios тоже. Это удаляет верхний отступ панели инструментов, поэтому остается только строка состояния. Однако, по крайней мере в симуляторе, нижняя часть строки состояния больше не выравнивается по нижней части метки iPhone X (она находится над ней). Поэтому я предполагаю, что заполнение необходимо, как и в формах, которые имеют заголовок (и команду возврата). Итак, я прихожу к следующей реализации:

// hide title area
super(""); // hides title area on ios (not status bar space and toolbar padding)
if (android()) {
    // hide title area (=toolbar) explicitly
    // use *either* this:
    getToolbar().hideToolbar();        // on ios this also hides the status bar space
    // *or* this:
    getToolbar().setUIID("Container"); // on ios this also hides the Toolbar top padding
}

Это правильно?

...