如何解决iOS上的轻量级弹出对话框
在PR https://github.com/codenameone/CodenameOne/pull/3233之后,我得到了我想要的popupDialogs(在Android上)。可以,文本正确居中,边距和填充符都可以。
但是我在iOS上遇到问题。有时,当弹出对话框包含很少的文本时,iOS会为对话框计算错误的尺寸。它仅在iOS上发生。
我了解到,iOS上Dialog弹出窗口的实现是本机的,而在Android上是轻量级的。如果我误会了,请纠正我。由于Android实施效果很好,因此我也想在iOS上使用它。这就是我这个RFE的意思: https://github.com/codenameone/CodenameOne/issues/3234
无论如何,我改变了我的问题:即使没有RFE,我也可以在iOS上使用“轻量级弹出对话框”吗?
解决方法
是的,但是可能有点棘手。如果您使用CSS设置,则由于this issue,弹出边框变得非常痛苦。
因此,您将需要使用设计器工具并定义PopupDialog来显式使用RoundRectBorder
,或者需要通过代码进行操作(将其明确设置为主题)。
可能有效(无法尝试)的黑客正在您的init(Object)
中而不是initFirstTheme
中使用以下代码:
try {
theme = Resources.openLayered(resourceFile);
themeProps.put("PopupDialog.derive","Dialog");
themeProps.put("PopupDialog.border",RoundRectBorder.create().
cornerRadius(2f).
shadowOpacity(60).shadowSpread(3.0f));
themeProps.put("PopupDialog.transparency","255");
themeProps.put("PopupDialog.bgColor",background);
themeProps.put("PopupDialog.padding","4,4,4");
themeProps.put("PopupDialog.padUnit",new byte[]{Style.UNIT_TYPE_DIPS,Style.UNIT_TYPE_DIPS,Style.UNIT_TYPE_DIPS});
UIManager.getInstance().setThemeProps(theme.getTheme(theme.getThemeResourceNames()[0]));
Resources.setGlobalResources(theme);
} catch(IOException e){
Log.e(e);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。