多个Codename One CSS名称

5

在同一Codename One项目中使用更多的CSS是可行的吗?

用例1:我想在应用程序的不同部分使用不同的样式,或者我想完全替换当前的样式。

用例2:我希望当前的样式来自几个CSS,就像在网页中一样。


是的,这是可能的。我已经在我的网站上完成了这个功能。它的位置在我的个人资料中有提示。您可以加载多个样式表,并从浏览器的备选样式菜单中选择它们,或通过JavaScript样式切换来选择。 - hellork
@hellork 您的评论与Codename One无关。Codename One的CSS支持与浏览器不同。 - Francesco Galgani
@Francesco 你好。你是将新的CSS文件添加到CSS文件夹中,还是在单击theme.res后创建了一个新主题?我也正在尝试在我的项目中实现多个CSS文件,但不确定应该采取哪些步骤。谢谢。 - app-dev
我正在无问题地使用多个CSS。将CSS文件添加到css文件夹中,按照Shai的答案修改build.xml。当您编译和运行项目时,每个CSS都会生成一个新的.res文件,如build.xml中所指定的那样。在主类的init()中,您应该有一个加载多个主题的代码。我为您创建了这个示例代码:https://gist.github.com/jsfan3/b001fdfa07a1a5a93600960ce1171e5f - Francesco Galgani
此外,请记得仅在第一个CSS中添加 includeNativeBool: true; - Francesco Galgani
非常感谢! - app-dev
1个回答

3

在插件集成的CSS实现中目前不支持这一功能。旧版实现允许这样做,但我们简化了一些东西,以便转换过程更流畅。

由于Codename One内部支持多个资源文件和分层主题,因此这可能很容易实现。我猜想在build.xml中添加以下内容可能会起作用:

<target name="-cn1-compile-css" if="codename1.cssTheme">
        <java jar="${user.home}/.codenameone/designer_1.jar" failonerror="true">
            <jvmarg value="-Dcli=true"/>
            <arg value="-css"/>
            <arg file="css/theme.css"/>
            <arg file="src/theme.res"/>
        </java>
        <java jar="${user.home}/.codenameone/designer_1.jar" failonerror="true">
            <jvmarg value="-Dcli=true"/>
            <arg value="-css"/>
            <arg file="css/second-theme.css"/>
            <arg file="src/second-theme.res"/>
        </java>
    </target>
</project>

它可以工作。相关问题:https://stackoverflow.com/questions/53505171/avoid-overwriting-of-build-xml-by-codename-one - Francesco Galgani
你如何为 second-themes.css 生成一个 .res 文件? - app-dev
上面的答案中有用于执行此操作的build.xml代码。 - Shai Almog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接