【问题标题】:First addCommand() item in a Form fails when used with native theme与本机主题一起使用时,表单中的第一个 addCommand() 项失败
【发布时间】:2017-07-17 14:44:32
【问题描述】:

我在使用 Form 类的 addCommand() 方法和 Native 主题时遇到了问题 - 其他主题工作正常。请参阅以下示例:

Form hi = new Form("Hi World");
hi.addComponent(new Label("Hi World"));

// with native theme - can't click on the first command in the list
hi.addCommand(new Command("Dummy1") {
    public void actionPerformed(ActionEvent ev) {
        Dialog.show("Dummy1 Clicked!", "You clicked the Dummy1", "OK", null);
    }
});
hi.addCommand(new Command("Dummy2") {
    public void actionPerformed(ActionEvent ev) {
        Dialog.show("Dummy2 Clicked!", "You clicked the Dummy2", "OK", null);
    }
});
hi.show();

当我使用上面的代码创建应用程序时,单击第二个命令(“Dummy2”)会生成预期的 Dialog,但单击第一个命令(“Dummy1”)不会执行任何操作。

这仅在使用本机主题时发生。如果我切换到 Flat Blue,那么单击任一命令都会产生预期的对话框。

这种行为在模拟器和真正的 Android 设备上都会发生(不了解 iOS)。

仅供参考,我的工具链是 NetBeans IDE v8.2,Java 1.8.0_25,带有 CodenameOne 插件 v3.6.0。

还有其他人看过吗?我错过了什么吗?如果是这样,是否有解决方法?

【问题讨论】:

    标签: java codenameone


    【解决方案1】:

    如果元素非常窄且非常靠近顶部,则点击可能会被误解为点击越界或状态栏区域。您需要将SideCommand 的样式设置为具有合理的默认值,因为此元素是非常特定于应用程序的。否则触摸可能会丢失。

    【讨论】:

      【解决方案2】:

      我尝试为SideCommand 设置样式,但似乎没有帮助。对我有用的是为TitleArea 定义一个样式,然后简单地取消选中DerivedPadding 设置(我将它们都设置为0px)。

      我不知道为什么会这样 - 我原以为派生值无论如何都会为零。

      【讨论】:

        猜你喜欢
        • 2017-06-06
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-09
        • 1970-01-01
        • 2011-01-08
        相关资源
        最近更新 更多