dc.getHeight() != screenHeight on Edge units

Is there any way to actually use the full screen on an Edge for a CIQ app. At least in the simulator for the 1030, the dc.getHeight() returns 419 rather than the Sys.getDeviceSettings().screenHeight of 470. The menu bar at the bottom seems to always be showing. I can understand this limitation for single field data fields but I would have assumed an app has access to the full screen. If there is really no access to the full screen, why even include the menu bar area in the screenHeight? Other than in Ui.onUpdate() is there any way to query the usable screen area?

I'm assuming this has been answered somewhere but I wasn't able to find it.
  • That's the way it is on devices with the button bar (edge 820, 1000 too). With watch apps (on these devices), it's the way that back and menu can be used (the hard buttons are KEY_START and KEY_LAP. I just always use the height and width from the dc. When using Sys, you are getting the actual screen dimensions, and not those of the dc.

    On other devices, the h/w from Sys is the same as the dc, so it can be used if you don't have access to the dc. But on these devices, they differ due to the button bar.

    I've not tried it, but in a DF, using the Sys w/h allows to see the screen size and in addition to the dc w/h for the DF.
  • With this logic, is there any way in which knowing the physical screen height can be useful? In my case, on the FR630/935/Epix, I've used the screen height to setup scaling factors for a map page in my app at init time. Easy to work around this by initializing in the first onUpdate call, but still interesting to have this value that is pretty much meaningless to CIQ apps.
  • The stuff in Sys might not be that useful for many things, but you should be looking at the w/h of dc in most cases anyway.

    You don't need to trigger an onUpdate to see it. You can't see it in initialize() but it's something that doesn't change unless onLayout is called. What I do is set

    width=dc.getWidith();
    height=dc.getHeight();

    in onLayout().

    If you want to handle the Oregon or Rino devices, you kind of have to do it there with the portrait/landscape modes. On the Oregon/Rino, that changes by simply just turning the device while your app is running. On them, there is no button bar, and you may have to do your own screen buttons, by the way.
  • Ah, good suggestion for onLayout(). I've never used it since I do all my own drawing and the devices I've targeted don't change anything for CIQ apps. Thanks.
  • I don't use layouts, but I use onLayout in pretty much everything to get/set the info I use in onUpdate when display things. (including width/height, and the x/y for displaying things)

    onUpdate never has to check anything, and just uses things set in onLayout for the direct dc calls.
  • Finally have an Edge 820 to play with (first physical Edge with CIQ support for me) and ran into this issue again. I noticed that in a regular activity, this bottom bar goes away most of the time so the full screen can actually be used. Is there really no way to hide the bar from within a CIQ app like on a built in activity? That really is most annoying.

    Feature request: allow a CIQ app to hide the back/menu bar.