popupDialog样式的问题

问题描述

我正在广泛使用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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...