如何将 CSS 叠加到 Codenameone 的主要资源主题上
How to overlay CSS onto the main resource theme in Codenameone
我的目标只是拥有一个 UID,它允许我在不同的组件周围放置阴影,但仍然在我的项目中使用主要的 theme.res。我发现我一次只能在模拟器中安装一个或另一个 运行ning - 这是我的问题。
经过对主题的大量研究,我似乎无法在主题中实现这种阴影效果,但必须在 CSS 中完成。我按照 CN1 研究页面生成了下面的 CSS 然后让我能够在我的项目中使用影子 UID
BottomShadow {
box-shadow: 2pt 22pt 22pt 0px rgba(61,59,61,0.48);
padding-bottom: 2mm;
padding-top: 1mm;
}
但我发现当我使用 CN1 设置 > 启用 CSS 时,这会阻止项目使用我的主 theme.res(很可能是因为设置创建了一个 theme.css.res覆盖它)。但是我的主题中有很多 'regular' UID,我需要 运行 以及语言环境。我读过有人可以在主题上叠加 CSS,但这对我不起作用。
theme = UIManager.initNamedTheme("/theme", "Theme");
if (Display.getInstance().isTablet()) {
UIManager.getInstance().addThemeProps(theme.getTheme("Theme_Tablet"));
}
try {
Resources css = Resources.openLayered("/theme.css");
UIManager.getInstance().addThemeProps(css.getTheme(css.getThemeResourceNames()[0]));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我要么得到 CSS 要么得到主题 运行ning,但不能同时得到。仅供参考,这是我的控制台信息,当我在模拟器中启动应用程序时,如果有帮助的话。谢谢
Found theme.css file. Watching for changes...
CSS> Retina Scale: 1.0
CSS> Input: C:\...\css\theme.css
CSS> Output: C:\...\src\theme.res
CSS> Acquiring lock on CSS checksums file C:\...\.cn1_css_checksums...
CSS> Lock obtained
CSS> C:\...\src\theme.res has been modified since it was last compiled. Making copy at C:\...\css\.backups\theme.res.1570314993006.bak
CSS> Waiting for web browser
CSS> Opening JavaFX Webview to render some CSS styles
CSS> Waiting for web browser
CSS> Web browser is available
CSS> Releasing lock
CSS> CSS file successfully compiled. C:\...\src\theme.res
CSS> Watching file C:\...\css\theme.css for changes...
CSS 对这个特殊情况所做的是创建效果的屏幕截图作为创建阴影的图像。因此,如果您生成了 CSS 主题资源,您只需在设计器中打开它并导出即可。然后,您可以使用导出的资源和(图像截图)在非 CSS 主题中重新实现它。
您还可以选择需要一些手动操作的主题覆盖。加载 CSS 主题,然后加载您的主题作为覆盖添加主题而不是作为设置主题。 theme overlays.
下的开发人员指南对此进行了介绍
顺便说一句,我猜你已经看过这个但不喜欢这种效果或需要与之互动:https://www.codenameone.com/blog/in-the-shadow.html
我的目标只是拥有一个 UID,它允许我在不同的组件周围放置阴影,但仍然在我的项目中使用主要的 theme.res。我发现我一次只能在模拟器中安装一个或另一个 运行ning - 这是我的问题。
经过对主题的大量研究,我似乎无法在主题中实现这种阴影效果,但必须在 CSS 中完成。我按照 CN1 研究页面生成了下面的 CSS 然后让我能够在我的项目中使用影子 UID
BottomShadow {
box-shadow: 2pt 22pt 22pt 0px rgba(61,59,61,0.48);
padding-bottom: 2mm;
padding-top: 1mm;
}
但我发现当我使用 CN1 设置 > 启用 CSS 时,这会阻止项目使用我的主 theme.res(很可能是因为设置创建了一个 theme.css.res覆盖它)。但是我的主题中有很多 'regular' UID,我需要 运行 以及语言环境。我读过有人可以在主题上叠加 CSS,但这对我不起作用。
theme = UIManager.initNamedTheme("/theme", "Theme");
if (Display.getInstance().isTablet()) {
UIManager.getInstance().addThemeProps(theme.getTheme("Theme_Tablet"));
}
try {
Resources css = Resources.openLayered("/theme.css");
UIManager.getInstance().addThemeProps(css.getTheme(css.getThemeResourceNames()[0]));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我要么得到 CSS 要么得到主题 运行ning,但不能同时得到。仅供参考,这是我的控制台信息,当我在模拟器中启动应用程序时,如果有帮助的话。谢谢
Found theme.css file. Watching for changes...
CSS> Retina Scale: 1.0
CSS> Input: C:\...\css\theme.css
CSS> Output: C:\...\src\theme.res
CSS> Acquiring lock on CSS checksums file C:\...\.cn1_css_checksums...
CSS> Lock obtained
CSS> C:\...\src\theme.res has been modified since it was last compiled. Making copy at C:\...\css\.backups\theme.res.1570314993006.bak
CSS> Waiting for web browser
CSS> Opening JavaFX Webview to render some CSS styles
CSS> Waiting for web browser
CSS> Web browser is available
CSS> Releasing lock
CSS> CSS file successfully compiled. C:\...\src\theme.res
CSS> Watching file C:\...\css\theme.css for changes...
CSS 对这个特殊情况所做的是创建效果的屏幕截图作为创建阴影的图像。因此,如果您生成了 CSS 主题资源,您只需在设计器中打开它并导出即可。然后,您可以使用导出的资源和(图像截图)在非 CSS 主题中重新实现它。
您还可以选择需要一些手动操作的主题覆盖。加载 CSS 主题,然后加载您的主题作为覆盖添加主题而不是作为设置主题。 theme overlays.
下的开发人员指南对此进行了介绍顺便说一句,我猜你已经看过这个但不喜欢这种效果或需要与之互动:https://www.codenameone.com/blog/in-the-shadow.html