如何检查使用Flutter的Android Q中是否启用了暗模式?我知道如何设置黑暗模式,但是我没有找到检查背景主题的方法。
这是设置黑暗主题的代码。
darkTheme: ThemeData.dark(),
Run Code Online (Sandbox Code Playgroud) 如果可以检测到这一点 - 是否有可能通过 CSS 类或 JavaScript 影响颜色?
使用深色阅读器扩展,还可以提交调整。如果没有其他办法可以改变的话,希望这里也是可能的。
我有一个小问题。当我在我的应用程序中打开深色模式,然后在 Android 中完全关闭我的应用程序时,当我重新打开它时,它会返回到浅色模式。我使用 AppCompatDelegate 来执行此操作。我有一个带有开关的设置片段,可以打开或关闭黑暗模式,并且效果很好。我对该开关的片段有一个共同的偏好,并且它可以工作。唯一的问题是,应用程序的其余部分在完全关闭并重新打开后不会保持在黑暗模式下。有没有办法可以保存并在关闭重新打开时恢复黑暗模式?
这是我的 MainActivity 代码:
package com.barzalou.lpapineau.test;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.Menu;
import com.barzalou.lpapineau.test.ui.CheckedChangeCallback;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
public class MainActivity extends AppCompatActivity implements CheckedChangeCallback {
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void …
Run Code Online (Sandbox Code Playgroud) 当我在我的应用程序中打开暗模式时,一些对话框的图标不可见,因为它们是暗的。我在 Android Studio 中使用“New Image Asset”选项创建了这些可绘制对象。是否有用于暗模式可绘制对象的特定资源文件夹?
我正在尝试为我的应用程序使用适用于 Android 10 的暗模式主题支持。除了应用程序启动器图标之外,我可以在黑暗模式下使用所有其他东西。
作为参考,我使用以下链接
https://developer.android.com/guide/topics/ui/look-and-feel/darktheme
我知道没有提到根据 Day/Night 主题更改的 App Icon 更改。
只是为了确认,需要您的所有输入,是否可以根据主题从正常到黑暗的变化来更改应用程序图标,反之亦然。
提前致谢。
我已经按照这个超级有用的答案/sf/answers/4315053011/的说明进行操作,并且我在WebView
实施中使用了暗模式,但是WebSettingsCompat.FORCE_DARK_AUTO
当我使用时似乎不起作用AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
,这让我相信文档正在谈论设置暗模式的不同方式?
此处的文档https://developer.android.com/reference/androidx/webkit/WebSettingsCompat#FORCE_DARK_AUTO说:
根据 WebView 父视图的状态启用强制黑暗。 如果 WebView 父视图被自动强制变暗(@see android.view.View#setForceDarkAllowed),则将呈现 WebView 内容以模拟黑暗主题。未附加到视图层次结构的 WebView 不会被反转。
我试着webView.setForceDarkAllowed(true)
和android:forceDarkAllowed="true"
父布局的WebView
,但这并没有帮助。但是一旦我更改为WebSettingsCompat.FORCE_DARK_ON
然后它就可以工作。
那么我该如何使用FORCE_DARK_AUTO
?
谢谢。
如果设备模式是深色模式,那么如何强制我们的 Android 应用程序 UI 选择浅色模式..在我的应用程序中,背景是白色,文本颜色是黑色,但在某些设备中启用了深色模式,然后背景显示为黑色,文本颜色为也黑色。我们如何强制 Android 应用进入浅色模式
我试图理解为什么ActionBar
浅色主题与深色主题的风格不同。下面是一个简单的设置屏幕,可以在具有相同主题的浅色和深色主题之间切换。
值\主题.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Dark application theme. -->
<style name="Theme.SettingsApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="colorPrimary">@color/blue_normal</item>
<item name="colorPrimaryVariant">@color/blue_dark</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="colorSurface">@color/red</item>
<item name="colorOnSurface">@color/green</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
值夜\themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Dark application theme. -->
<style name="Theme.SettingsApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="colorPrimary">@color/blue_normal</item>
<item name="colorPrimaryVariant">@color/blue_dark</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="colorSurface">@color/red</item>
<item name="colorOnSurface">@color/green</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
值\颜色.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue_normal">#FF3F7FBF</color>
<color name="blue_dark">#FF2F6090</color>
<color name="white">#FFFFFFFF</color>
<color name="red">#FF0000</color>
<color name="green">#00FF00</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
在“照亮它们”中,ActionBar
呈现为蓝色和白色,表明它正在使用colorPrimary
和colorOnPrimary
。在深色主题中,它呈现为红色和绿色,表明它正在使用colorSurface
和 …
android android-actionbar android-toolbar android-dark-theme android-darkmode
我已经看到了有关检测暗模式就像许多问题这一个在堆栈溢出,并参观了许多媒体的博客喜欢如何当你使用暗模式编程了解和DayNight -添加一个黑暗的主题,你的应用程序,并在所有这些他们执行像这样的支票:
fun isNightModeEnabled(context: Context): Boolean =
context.resources.configuration.uiMode.and(UI_MODE_NIGHT_MASK) ==
UI_MODE_NIGHT_YES
Run Code Online (Sandbox Code Playgroud)
这适用于任何手机,甚至运行 Android One 的小米手机,但不适用于运行 MIUI 的小米智能手机。
对于运行 MIUI 的小米设备:
context.resources.configuration.uiMode
= 17
和context.resources.configuration.uiMode.and(UI_MODE_NIGHT_MASK)
=16
相比之下,UI_MODE_NIGHT_YES (32)
启用或禁用暗模式时总是返回 false。
是否真的可以检测到此类设备已强制启用暗模式?
问题是:
当我打开应用程序时,我根据设备的主题设置主题。在android代码中它是= mode_night_follow_system。
让我们想象一下系统(设备)的主题是黑暗的。当登录移动应用程序时,我这样做
AppCompatDelegate.setDefaultNightMode(mode_night_follow_system)
Run Code Online (Sandbox Code Playgroud)
该应用程序将颜色更改为深色,但感觉它并没有采用我在深色中指示的颜色。
该问题仅适用于 Android 10+ 的小米手机
在三星、华为等其他机型上没有问题。
问题是什么?
android-darkmode ×10
android ×9
xiaomi ×2
android-10.0 ×1
css ×1
darkmode ×1
dart ×1
flutter ×1
java ×1
javascript ×1
miui ×1