弹出对话框样式中的问题



我广泛使用Dialog的showPopupDialog(...)函数,它运行良好。我记得过去它在安卓上不起作用,或者在安卓系统上有问题,但现在它在安卓系统上运行得很好。

但我在安卓系统上有一个造型问题。基本上,我希望在对话框的中间显示一个组件。这是最简单的情况,有时我会在南侧添加按钮。然而,在这两种情况下,我只能在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中对此进行了研究:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/components/InteractionDialog.java#L786-L815

Dialog做一些类似的事情可能是有意义的,因为它似乎没有任何代码:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/ui/Dialog.java#L1209

最新更新