使用gui builder和css代理一个。

时间:2016-08-11 11:32:30

标签: css css3 themes codenameone

我正在构建一个cn1应用程序,到目前为止,它使用GUI Builder中的“主题”来更改容器和按钮的外观。我现在想要为容器添加一个特定的边框,我发现通过css更容易完成边框,我在这里找到了如何操作和代码的说明:https://www.codenameone.com/blog/rounded-corners-shadows-and-gradients-with-css.html。我添加了.jar,创建了一个css文件夹并添加了我的theme.css文件和代码。在我的表单的beforeshow方法中,我将容器的uiid更改为theme.css中定义的uiid。但是,当我运行应用程序时,容器会使用默认的Container uiid,而不是我的.css中定义的容器。我觉得这是因为我已经在我的gui构建器中使用我的uiids定义了一个主题,现在我正在尝试将容器的uiid更改为另一个主题中定义的uiid。我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您有两个主题,并且您希望在应用程序中使用两者中的元素。有两种有效的方案,一种是两个主题都在同一个res文件中,另一个是两个主题都在一个单独的文件中。

如果它们在同一个res文件中,请执行以下操作:

theme = UIManager.initNamedTheme("/theme", "firstTheme");
UIManager.getInstance().addThemeProps(theme.getTheme("secondTheme"));

如果它们位于单独的文件中,请执行以下操作:

theme = UIManager.initNamedTheme("/theme", "firstTheme");
Resources otherTheme = Resources.openLayered(("/otherTheme");
UIManager.getInstance().addThemeProps(otherTheme.getTheme("secondTheme"));

这在主题分层下的Codename One Developer Guide中进行了讨论。