2010-02-05 5 views
0

Я хочу отображать MapField on Storm на Full Screen, и для этого я использую MapField.setPreferredSize (Display.getWidth, Display.getHeight). Но вместо того, чтобы видеть MapField с размерами 320X480, я получаю MapField размером примерно 320X280 и оставшимся пространством (480-280 = 200), заполненным черным цветом. У меня есть перекрестные значения Display.getWidth() и Display.getHeight (320, 480)Проблема с отображением MapField

ответ

1

Проблема в том, что на Storm, Display.getWidth() и getHeight() не возвращаются одинаково все время - они пытаются учесть наличие (или отсутствие) мягкой клавиатуры. Точка, в которой система решает клавиатуру, есть или нет, довольно иррациональна. (Шторм абсолютно сосет, как я полагаю, вы выяснили.)

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

Вот примерный шаблон. Помните, что это в вашем классе, который расширяет экран. (Например, начало В)

protected void sublayout(int width, int height) { 
    super.sublayout(width, height); 
    // the screen is acutally width X height 
    // do your screen-specific stuff here 
} 
1

Похоже, ваше приложение работает в режиме совместимости. Вы можете проверить это с помощью приложения # isInTouchCompatibilityMode(). Сенсорный режим совместимости фиксирует область вывода строк Storms на 320x240, как вы переживаете.

+0

Привет Fostah, Thanx для response.No, мое приложение не работает в совместимости mode..Actually мой Экран, имеющий три компонента один HorizontalManager, содержащий EditField и кнопку, Затем я добавил MapField, а затем снова HorizontalManagers, содержащий две кнопки. Я пытаюсь установить MapField между этими двумя горизонтальными менеджерами, но он становится отображаемым гораздо меньшим размером. – tek3

Смежные вопросы