popupDialog 样式中的问题

Problems in the styling of a popupDialog

我广泛使用 Dialog 的 showPopupDialog(...) 功能,它工作正常。我记得以前在Android上不行或者在Android上有问题,但是现在在Android.

上可以很好用了

但是 Android 我的样式有问题。基本上我希望在对话框中间显示一个组件。这是最简单的情况,有时我会在南侧添加按钮。然而,在这两种情况下,我只能将对话框弹出窗口的内容准确地放在 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,当箭头在底部时没有另一个 UUID。

有什么想法或解决方法吗?谢谢

(我补充说,到目前为止,这是我唯一需要使用 CSS 的 @media 标签来区分 iOS 样式和 Android 的情况样式。)

最初,当我们编写弹出对话框时,它是 iOS 唯一的功能,因为样式仅在 iOS 上。我们使用 9 片图像边框来做弹出窗口,我们不想在每个原生主题中复制该主题元素,所以我们将其留给了开发人员。

后来我们想出了在 RoundRectBorder 上显示箭头的功能。另一个优势是 iOS/Android 转向扁平化设计,将之前复杂的对话框样式变成了简单的纯白色弹出窗口。所以我们白白实现了这个跨平台。但是因为 iOS 有 pre-existing 图像边框,它仍然在 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