iOS 上的轻量级弹出对话框
Lightweight Popup Dialogs on iOS
在 PR https://github.com/codenameone/CodenameOne/pull/3233 之后,我得到了我想要的弹出对话框(在 Android 上)。他们没问题,文本正确地位于中心,边距和填充都是我想要的。
但我对 iOS 有疑问。有时,当弹出对话框包含的文本很少时,iOS 会为对话框计算错误的维度。它只发生在 iOS.
我的理解是 iOS 上的对话框弹出窗口的实现是本机的,而 Android 上是轻量级的。如果我误解了,请纠正我。由于 Android 实现效果很好,我也想在 iOS 上使用它。这就是我的这个RFE的意思:
https://github.com/codenameone/CodenameOne/issues/3234
无论如何,我改变了我的问题:即使没有那个 RFE,我也可以在 iOS 上使用轻量级弹出对话框吗?
是的,但这可能有点棘手。如果你使用 CSS 设置弹出边框会变得很痛苦,因为 this issue.
因此,您需要使用设计器工具并定义 PopupDialog 以显式使用 RoundRectBorder
,或者您需要从代码中执行此操作(将其显式设置到主题中)。
一个可能有效的 hack(没试过)是在你的 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,4");
themeProps.put("PopupDialog.padUnit", new byte[]{Style.UNIT_TYPE_DIPS, 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);
}
在 PR https://github.com/codenameone/CodenameOne/pull/3233 之后,我得到了我想要的弹出对话框(在 Android 上)。他们没问题,文本正确地位于中心,边距和填充都是我想要的。
但我对 iOS 有疑问。有时,当弹出对话框包含的文本很少时,iOS 会为对话框计算错误的维度。它只发生在 iOS.
我的理解是 iOS 上的对话框弹出窗口的实现是本机的,而 Android 上是轻量级的。如果我误解了,请纠正我。由于 Android 实现效果很好,我也想在 iOS 上使用它。这就是我的这个RFE的意思: https://github.com/codenameone/CodenameOne/issues/3234
无论如何,我改变了我的问题:即使没有那个 RFE,我也可以在 iOS 上使用轻量级弹出对话框吗?
是的,但这可能有点棘手。如果你使用 CSS 设置弹出边框会变得很痛苦,因为 this issue.
因此,您需要使用设计器工具并定义 PopupDialog 以显式使用 RoundRectBorder
,或者您需要从代码中执行此操作(将其显式设置到主题中)。
一个可能有效的 hack(没试过)是在你的 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,4");
themeProps.put("PopupDialog.padUnit", new byte[]{Style.UNIT_TYPE_DIPS, 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);
}