我有一个使用webview的Android应用,最近我试图弄清楚如何通过使用新的@media (prefers-color-scheme: dark)
CSS语法添加深色主题。我在页面上写了正确的CSS,并且如果我在Chrome的暗模式下打开它并在Chrome中打开它,则可以使用。我也AppTheme
继承了Theme.AppCompat.DayNight
,当我为设备上的整个操作系统打开暗模式时,我的应用会显示暗加载对话框等。甚至<input>
元素的自动完成选项也变暗了。但是,加载了我的webview的网页并没有变暗。根据此页面,Web视图应支持此功能,但我无法使其正常工作。我在这里想念什么?
我还发现在API 29中有此WebSettings.setForceDark()
方法。可能是我要找的东西吗?我希望找到一个适用于较低API级别的解决方案。
顺便说一句,我当前的解决方法是注入一个JavaScript接口,如下所示:
webView.addJavascriptInterface(new JSInterface(), "jsInterface");
...
public class JSInterface {
@JavascriptInterface
public boolean isNightMode() {
int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
return nightModeFlags == Configuration.UI_MODE_NIGHT_YES;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的网页中,调用该jsInterface.isNightMode()
方法并根据结果动态加载不同的CSS文件。它当然可以工作,并且可以根据需要对全局暗模式设置做出响应,但是我仍然想知道是否可以进行prefers-color-scheme
工作。
css android android-webview android-studio android-night-mode
我对 ESLint 还很陌生,我找不到满足我要求的规则。考虑以下代码:
if(someCondition)i++;
Run Code Online (Sandbox Code Playgroud)
我想在括号后强制使用一个空格,这样我们就应该有以下内容:
if(someCondition) i++;
Run Code Online (Sandbox Code Playgroud)
但我就是找不到这样的规则;它不是space-before-function-paren
(显然),keyword-spacing
(只影响 后面的间距if
)或space-before-blocks
(因为这是单行 if,所以没有块)。请帮忙。谢谢!
PS 同样的规则也应该适用于单行 while。
现在 Blazor WebAssembly 正式发布,我尝试使用该模板创建我的第一个 Blazor wasm 项目,但很快注意到一件事与我所期望的完全不同。模板中似乎没有“服务器”部分,发布的结果仅包含静态资产(包括所有 .dll 文件)。当然,我想知道如何访问我的在线数据库?允许客户端直接访问我的数据库听起来是一个糟糕的主意(如果它可以做到的话),因为我必须在我的客户端代码中的某处包含我的连接字符串......绝对不!
在谷歌上快速搜索后,似乎每个人都在使用另一台服务器使用 API 来提供数据。好的,很好,但是如果我可以将我的服务器部分包含在同一个项目中,并使用 WebSocket(就像在 Blazor 服务器中一样)而不是 API 与我的客户端进行通信,那不是更好吗?那可能吗?