【问题标题】:codename one using gui builder and css.代号一使用 gui builder 和 css。
【发布时间】:2016-12-18 02:57:57
【问题描述】:

我正在构建一个 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 builder 中用我的 uiid 定义了一个主题,现在我正试图将容器的 uiid 更改为在另一个主题中定义的 uiid。我在这里做错了吗?

【问题讨论】:

    标签: css themes codenameone


    【解决方案1】:

    如果我理解正确,您有两个主题,并且您想在应用程序中使用这两个主题中的元素。有两种有效的场景,一种是两个主题都在同一个 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 中进行了讨论。

    【讨论】:

    • 我的 theme.res 是默认创建的。然后我添加了 css-ant-task.jar 并在我的根目录中添加了一个“css”文件夹。在我的 css 文件夹中,我添加了一个“theme2.css”,我在其中添加了一些 uiid 的代码。这是一个可视化应用程序,所以我使用的是 StateMachine 和 StateMachineBase。我尝试将此添加到我的 onstart 中: Resources otherTheme = Resources.openLayered("/theme2.css"); UIManager.getInstance().addThemeProps(otherTheme.getTheme("theme2"));但是应用程序在第二行出现空指针时崩溃。
    • 没有 CSS 支持,css 被翻译成单独的 res 文件,所以使用"/theme2"。请注意,我明确没有指定文件扩展名。对于旧的 GUI 构建器,您需要将此代码放在 initTheme 方法中。您不需要第一个带有initNamedTheme 的块,只需调用super,然后执行其他主题代码。
    • 那行得通。打了一个电话 refreshTheme 和它的工作山雀。谢谢谢
    • 大家好,我有一个问题,我认为我的要求类似于这个问题的情况,我需要添加一些 CSS 样式(已经完成并添加了 CSS 支持),这产生了一个额外的.res 文件在我的项目中,想法是在 theme.res 中维护默认主题,并在 css 上应用一些样式。在“如果它们在单独的文件中”部分的回答中尝试了 Shai 的建议(这在我的主类的 init 方法中),然后在我的 Forms 构造函数中添加了 setUIID("style defined in second .res") 但它不起作用,尝试调用 refreshTheme 但就是不能。它似乎忽略它
    • 只考虑第一个 .res 主题,如果我遗漏了什么,有什么建议吗?如何在主题中调试这种分层?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2012-11-02
    • 2018-12-16
    相关资源
    最近更新 更多