如何解决代号仅当我点击屏幕时一个关闭的PopUp对话框
我有一个带有许多显式弹出对话框的Android。
仅在按下关闭按钮时才想关闭的东西,而不是在对话框外的屏幕上点击时才关闭。
我正在将setDisposeWhenPointerOutOfBounds
设置为false,但这似乎仅适用于非弹出式对话框。
对于弹出对话框,有没有办法实现这种行为?
非常感谢。
这是我的代码:
public void dialogTest () {
Dialog dialog = new Dialog("Test");
dialog.add(new Button ("Test")).add(new Button("TestTwo"));
dialog.setDisposeWhenPointerOutOfBounds(false); // flag is set to false,but dialog closes anyway when I tap on the screen
dialog.showPopupDialog(buttonTest);
}
解决方法
@rainer是的,有可能。但是,首先简要说明一下。由于我不知道的原因,在第1176行的Dialog.java文件中强加了disposeWhenPointerOutOfBounds = true;
。您可以自己检查:https://github.com/codenameone/CodenameOne/blob/1ad583bae9e05954c6bff852649d3b6d8264414b/CodenameOne/src/com/codename1/ui/Dialog.java#L1176
这就是为什么dialog.setDisposeWhenPointerOutOfBounds(false);
对您不起作用的原因,因为它被设计为仅适用于普通对话框而不适用于对话框弹出窗口。
此行为也在Javadoc中指定,因此这似乎是有意的选择,尽管我不知道为什么,尤其是我不知道Android和iOS在这一点上是否存在差异,因为它们创建弹出对话框的默认方法不同(也许问题就在这里)。
说,解决方案非常简单:它可以在Simulator中运行,如果它也可以在真实设备上运行,我将让您尝试。只需通过这种方式覆盖onShow
方法:
Dialog d = new Dialog(new BorderLayout()){
@Override
protected void onShow() {
this.setDisposeWhenPointerOutOfBounds(false);
}
};
[...]
d.showPopupDialog(buttonTest);
,
当显示Dialog
(弹出或其他方式)时,其后面的表格不是“真实的”。由于Dialog
是Form
,因此它将始终占据整个屏幕。您在后台看到的是上一个Form
的屏幕截图。
您感兴趣的是InteractionDialog
,它也有一个弹出选项。它以不同的方式工作,并允许您与其下面的Form
进行交互。参见https://www.codenameone.com/blog/picking-dialog-type.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。