问题描述
我正在广泛使用Dialog的showPopupDialog(...)
函数,它工作正常。我记得过去它在Android上无法运行,或者在Android上存在问题,但是现在在Android上可以正常运行。
但是我在Android上存在样式问题。基本上,我希望对话框中间显示一个组件。这是最简单的情况,有时我在南侧添加按钮。但是,在这两种情况下,我都只能将Dialog弹出窗口的内容完全放在iOS的中心,而在Android上却有问题。
这是我当前的CSS:
@media platform-and {
PopupContentPane {
margin: 0px;
padding: 1.5mm;
padding-bottom: 3.0mm;
}
}
@media platform-ios {
PopupContentPane {
margin: 0px;
padding: 1.5mm;
padding-top: 0px;
}
}
iOS和Android之间的主要区别在于,尽管iOS可以使用此CSS正常工作(无论箭头是向上还是向下),但在Android上,要获得与iOS相同的结果,我需要这样制作CSS:
@media platform-and {
PopupContentPane-ArrowTop {
margin: 0px;
padding: 1.5mm;
}
PopupContentPane-ArrowBottom {
margin: 0px;
padding: 1.5mm;
padding-bottom: 3.0mm;
}
}
或类似的东西(还有一些调整)。
因此,在Android上,当箭头位于底部时,我需要一个额外的填充底部。就这样,但这是不可能的,因为当前当箭头位于顶部时没有PopupContentPane的UUID,而当箭头位于底部时没有UUID。
有什么想法或解决方法吗?谢谢
(到目前为止,我补充道,这是唯一需要使用CSS的@media标记将iOS样式与Android样式区分开的情况。)
解决方法
最初,当我们编写弹出对话框时,它是仅iOS的功能,因为样式仅在iOS上。我们使用9个图像边框进行弹出,并且我们不想在每个本机主题中复制该主题元素,因此我们将其留给开发人员。
稍后,我们想到了在RoundRectBorder
上显示箭头的功能。另一个优势是在iOS / Android上转向平面设计,这使以前复杂的对话框样式变成了简单的纯白色弹出窗口。因此,我们以白色实现了这个跨平台。但是由于iOS具有预先存在的图像边框,因此它仍在iOS上使用并且未被删除。我们可能应该删除它并处理出现的次要兼容性问题。
我最近在InteractionDialog
的{{3}}
为Dialog
做类似的事情可能看起来很有意义,而https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/components/InteractionDialog.java#L786-L815