MapField显示问题

时间:2010-02-05 10:52:03

标签: blackberry

我想在全屏幕上的Storm上显示MapField,为此我使用的是MapField.setPreferredSize(Display.getWidth,Display.getHeight)。但是我没有看到尺寸为320X480的MapField,而是获得了大约为320X280的尺寸的MapField和填充了黑色的剩余空间(480-280 = 200)。我有交叉检查的Display.getWidth()和Display.getHeight(320, 480)

2 个答案:

答案 0 :(得分:1)

听起来您的应用程序在兼容模式下运行。您可以使用Application#isInTouchCompatibilityMode()进行检查。触摸兼容模式将风暴的可绘制区域修复为320x240,就像您遇到的那样。

答案 1 :(得分:1)

问题是在Storm上,Display.getWidth()和getHeight()不会一直返回相同的东西 - 它们试图考虑软键盘的存在(或不存在)。系统决定键盘的位置是否合理是非常不合理的。 (风暴绝对糟透了,我想你已经想通了。)

似乎有效的一种方法是在屏幕中使用子类子布局(宽度,高度)。这将在Storm上被多次调用,因为系统会在找出正在发生的事情时停下来。所以这意味着更多的计算,但它的工作原理。你在那里看到的最后一个值是正确的。

这是一个粗略的模板。请记住,这是在您的课程中扩展屏幕。 (例如MainScreen)

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