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

loadingDialog = new javax.microedition.lcdui.Form("Please Wait");
        Gauge gau = new Gauge("\nPlease wait.", false, Gauge.INDEFINITE,
                Gauge.CONTINUOUS_RUNNING);
        gau.setPreferredSize(230,80);
        gau.setLayout(Item.LAYOUT_BOTTOM);
        //Displayable SizeCanvas = new MyCanvas();
        StringItem st = new StringItem(" ", " ");
        loadingDialog.append(st);
        loadingDialog.append(gau);
        parentMidlet.displays.setCurrent(loadingDialog);
1
SoH 7 Сен 2012 в 09:58

1 ответ

Лучший ответ

Существует специальная директива макета для центрирования элемента, что неудивительно, LAYOUT_CENTER

Используя предоставленный вами фрагмент кода, эту директиву можно задать следующим образом:

gau.setLayout(Item.LAYOUT_BOTTOM | Item.LAYOUT_CENTER);

Или, если вы хотите установить его в отдельном операторе,

gau.setLayout(gau.getLayout() | Item.LAYOUT_CENTER);

Если ваше устройство - MIDP 2.0, эта директива не обязана следовать (хотя можно ожидать, что устройство разумного качества будет поддерживать ее). В устройстве MIDP 2.1 он должен поддерживаться явным требованием в спецификации.


Кстати, для более сложных целей выравнивания элементов существует специальный объект lcdui с именем Spacer:

Пустой неинтерактивный элемент с настраиваемым минимальным размером. Минимальная ширина полезна для распределения свободного пространства между элементами в одной строке формы. Минимальная высота полезна для обеспечения определенной минимальной высоты строки. Приложение может установить минимальную ширину или высоту на любое неотрицательное значение. Реализация может применять определенные реализацией максимальные значения для минимальной ширины и высоты ...

... Основная цель Spacer - позиционировать другой элемент ...

3
gnat 7 Сен 2012 в 13:53
Можно ли добавить распорку в первый ряд формы? Я пытаюсь добавить проставку, а затем добавить калибр. Видимо это не работает.
 – 
SoH
7 Сен 2012 в 14:46
Это определенно возможно, спецификация MIDP позволяет добавлять спейсер так, как вы это делаете. не работает может быть результатом неправильного использования директив layout / min / предпочтительного размера. Насколько я помню, работая с ним, нужно было быть очень осторожным, чтобы получить желаемый эффект.
 – 
gnat
7 Сен 2012 в 15:58
1
Я обнаружил проблему. Прокладка есть, но не показана. Но если я беру датчик, прокручиваю его вниз и оставляю, он встает на свое место, то есть после проставки. Проблема в том, что изначально датчик отображается вверху.
 – 
SoH
7 Сен 2012 в 16:37
Понятно. Вероятно, это конфликт с директивой LAYOUT_CENTER, из-за которой Gauge может находиться на отдельной «строке». Как я уже упоминал, с распорками и продвинутыми элементами макета довольно быстро могут возникнуть сложности.
 – 
gnat
7 Сен 2012 в 17:09