Menu2 looks terrible on new devices (fenix7 / ciq4?)

Menu2 looks terrible on new devices and the alignment options make no sense. Or does it only look bad in the simulator?

Here's a simple Menu2, adapted from the example in the api documentation. No alignment options specified.

function onMenu() {
    var menu = new WatchUi.Menu2({:title=>"My Menu2"});
    var delegate;
    menu.addItem(new WatchUi.MenuItem(
        "Item 1",
        "My value",
        :item1,
        {}));
    menu.addItem(new WatchUi.ToggleMenuItem(
        "Toggle 1",
        {:enabled=>"enabled", :disabled=>"disabled"},
        :toggle1,
        false,
        {}));
    menu.addItem(new WatchUi.ToggleMenuItem(
        "Toggle 2",
        {:enabled=>"enabled", :disabled=>"disabled"},
        :toggle2,
        true,
        {}));
    delegate = new MainMenuDelegate();
    WatchUi.pushView(menu, delegate, WatchUi.SLIDE_IMMEDIATE);
    return true;
}

This looks fine on a fenix6x or older device. Here's what it looks like on a fenix6x, showing the 1st and 2nd item selected:

1st item:

2nd item:

Here's what it looks like a fenix7x:

1st item:

2nd item:

Why is the alignment inconsistent on the fenix7x? Why are the labels on the toggle items cut off? And it looks even worse in the simulator; due to the round screen, even more is cut off from the previous/next items on the menu than what's shown in the screen capture.

I figured I'd try out some of the alignment options. Here's the modified code with right alignment on every item:

function onMenu() {
    var menu = new WatchUi.Menu2({:title=>"My Menu2"});
    var delegate;
    menu.addItem(new WatchUi.MenuItem(
        "Item 1",
        "My value",
        :item1,
        {:alignment=>WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT}));
    menu.addItem(new WatchUi.ToggleMenuItem(
        "Toggle 1",
        {:enabled=>"enabled", :disabled=>"disabled"},
        :toggle1,
        false,
        {:alignment=>WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT}));
    menu.addItem(new WatchUi.ToggleMenuItem(
        "Toggle 2",
        {:enabled=>"enabled", :disabled=>"disabled"},
        :toggle2,
        true,
        {:alignment=>WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT}));
    delegate = new MainMenuDelegate();
    WatchUi.pushView(menu, delegate, WatchUi.SLIDE_IMMEDIATE);
    return true;
}

Now here's the 1st item selected on the fenix7x:

2nd item:

Why is all the text left aligned when I specifically set right alignment? This at least looks better than no alignment specified. Although it still has the problem with the previous/next item labels being cut off (the cut off is only visible in the simulator). This is the best Menu2 option I could come up with on newer devices. Is there something better or do people usually just do custom menus?

  • TL;DR I think the behavior with no alignment set is a bug in the sim, but the real device might work properly. As far as right alignment goes, I'm gonna guess Garmin won't allow that with the new UI because it doesn't fit / will look weird.

    I have an app that uses Menu2, and I just tested it on a 945 LTE running beta software which has same UI as Fenix 7X and other current-gen devices. The menu has regular MenuItems and ToggleMenuItems with no alignment set, but everything is left-aligned.

    It's fairly old app that wasn't built with support for Fenix 7X or explicit support for 945 LTE.

    I added Fenix 7X and 945 LTE to the manifest, fixed some builds errors and tested in the sim:

    - 945 LTE shows the older UI, as expected

    - Fenix 7X shows the same thing that you posted

    I'm guessing you might see different results on a real Fenix 7X. I think newer watches and the 945 LTE beta use the same firmware base.

  • It's the sim that's wrong.  Here's one of my menus in the sim and on a real device:

    The sim has always been a a bit off for both Menu and Menu2, and there is this for both in the API doc:
    ------------------------------------

    Note:

    The look and feel of a Menu2 is device-specific.

    -------------------------------------

    which pretty much translates to "don't expect a real device will look the same as the sim"

    This is something that can probably be fixed a bit in the sim, but I don't recall ever seeing a bug report for it.

  • Not to state the obvious, but in this case obviously an attempt was made to make the sim look like the real device, and it failed.

    I would still consider it a bug in the sim - not a minor issue like something being off by a few pixels (although things of that nature have been reported), but something that's blatantly incorrect.

    Although it still has the problem with the previous/next item labels being cut off (the cut off is only visible in the simulator).

    Unfortunately this is what the new UI looks like on the real devices, even in the system menus - the next and previous menu items are cut off at the left. It's less of a problem for menu items which have an icon on the left (and which don't have an associated value)

  • Thanks for the replies and . That explains everything. I'll leave the default no alignment specified for the menu items. Thanks!