标签: android-dark-theme

Android Q 中的深色主题配置更改

我想在我的应用程序中实现 android 10 深色主题,我有以下情况:

SYSTEM_DEFAULT, NIGHT_MODE, LIGHT_MODE

问题是当我从应用程序内部将主题从夜晚或灯光更改为 system_default 时,它无法理解系统是处于亮模式还是暗模式。所以主题不会更新。

我已经尝试过谷歌的黑暗主题 https://developer.android.com/guide/topics/ui/look-and-feel/darktheme

并且实施配置仍然对我不利,因为如果用户在系统默认为天时将天更改为系统默认值,我不想重新创建我的活动。

反正我能处理这个吗?

when(id) {
  NIGHT - > theme = Theme.NIGHT_MODE
  DAY - > theme = Theme.LIGHT_MODE
  SYSTEM_DEFAULT - > theme = Theme.SYSTEM_DEFAULT
}

context ? .clearCachedDrawables()
activity ? .recreate()
}
Run Code Online (Sandbox Code Playgroud)

编辑:

when (themeStatus) {
            Theme.LIGHT_MODE ->
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
            Theme.NIGHT_MODE ->
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
            Theme.SYSTEM_DEFAULT ->
               AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
        }
Run Code Online (Sandbox Code Playgroud)

android kotlin-android-extensions android-10.0 android-dark-theme

6
推荐指数
1
解决办法
4550
查看次数

在Android应用程序中反应原生强制光模式

当我在模拟器(Pixel android 10)中运行我的本机应用程序时,我注意到当手机设置为暗模式时,该应用程序将白色背景更改为黑色。这使得难以阅读黑色文本或其他任何内容。尽管操作系统处于深色或浅色模式,是否有办法强制应用程序以浅色主题运行

"react-native-appearance": "^0.3.2",
Run Code Online (Sandbox Code Playgroud)

android themes android-layout react-native android-dark-theme

6
推荐指数
1
解决办法
2881
查看次数

如果在 Android 上启用了暗模式,请使用不同的图像

我有两种 PNG 变体,一种是绘制的文本为黑色,另一种为白色。默认情况下,在白色背景上,我使用黑色图像变体,但是当启用系统暗模式时,图像在背景中几乎不可见。

启用暗模式时,如何指示我的应用使用备用图像?

图像在活动的 XML 中设置:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.me.some_app.someActivity">

    <ImageView
        android:id="@+id/Logo"
        android:layout_width="176dp"
        android:layout_height="219dp"
        android:contentDescription="@string/LogoDescription"
        app:layout_constraintBottom_toTopOf="@+id/divider"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/logo_black" />
Run Code Online (Sandbox Code Playgroud)

android android-dark-theme

6
推荐指数
2
解决办法
1796
查看次数

防止在不增加SDK版本的情况下在MIUI中强制使用深色模式

我的新应用不支持深色模式。当我在小米上安装它时(打开深色模式)MIUI 会在其上应用深色模式。MIUI 在“设置 -> 显示 -> 更多深色模式选项”中进行设置(“更多深色模式选项”截图)。尽管我的应用程序不支持此选项,但我的应用程序已打开此选项并强制使用深色模式。大多数其他应用程序没有启用此模式。有些应用程序是“白色”的,但对于它们来说,此模式未启用并且它们可以正常工作。

我找到了通过将以下行添加到 theme.xml 的解决方案:

<item name="android:forceDarkAllowed">false</item>
Run Code Online (Sandbox Code Playgroud)

问题是,这一行需要设置 minSdkVersion = 29。如何防止 MIUI 在“更多深色模式选项”中启用该选项并在我的应用程序中强制使用深色模式(就像在大多数其他“白色”应用程序中一样)并将 SDK 版本保持在 21 ?

基于Android 10的MIUI 12

android miui android-dark-theme darkmode

6
推荐指数
1
解决办法
6794
查看次数

ContextCompat.getColor()忽略NightMode

TL,DR;

ContextCompat.getColor()values-night/colors.xml启用夜间模式时应使用夜间颜色(),但不使用。

这是问题所在:

嗨,大家好,

因此,我正在为我的Android应用程序实现深色主题,我称其为启用它: AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

我在中设置了颜色,values/colors.xml并在中设置了深色版本values-night/colors.xml。颜色的变化取决于nightMode,但:

当我使用时ContextCompat.getColor(getApplicationContext(), R.id.myColor),它将使用常规颜色(values/colors.xml)而不是夜间颜色(values-night/colors.xml)。

在我中build.gradle,我设置了以下这些:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0-beta01'
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

PS:我已经看过以下问题,它不能回答此问题/sf/ask/4044576301/

android android-appcompat android-dark-theme

5
推荐指数
2
解决办法
90
查看次数

Flutter 的深色模式颜色

在网站material.io中写道:

创建品牌深色表面,覆盖主品牌颜色在低不透明度超过建议黑暗的主题表面颜色(#121212)。颜色 #1F1B24 是将深色主题表面颜色 #121212 和8% 原色结合的结果。

品牌颜色

我的问题是:

  1. 如何计算 8% 的颜色?
  2. 如何在Flutter 中实现这个叠加的东西?

uicolor material-design flutter android-dark-theme

5
推荐指数
1
解决办法
1095
查看次数

如何在flutter中使用暗模式和不同分辨率的资源图像?

我在我的 flutter 项目中使用具有不同分辨率的图像,如此处所述。现在我想为深色模式主题添加自定义图像。我在 pubspec.yaml 中的资产声明如下所示:

flutter:
  uses-material-design: true
  assets:
    - assets/images/img_menu.png
    - ...
Run Code Online (Sandbox Code Playgroud)

我的资产结构:

  .../pubspec.yaml
  .../assets/images/img_menu.png
  .../assets/images/0.75x/img_menu.png
  .../assets/images/1.5x/img_menu.png
  .../assets/images/2.0x/img_menu.png
  .../assets/images/3.0x/img_menu.png
  .../assets/images/4.0x/img_menu.png
Run Code Online (Sandbox Code Playgroud)

我以这种方式在项目中加载图像:

Image.asset('assets/images/img_menu.png')
Run Code Online (Sandbox Code Playgroud)

我知道对于简单的单色图像我可以像这样改变它的颜色:

Image.asset('assets/images/img_menu.png', 
                      color: Theme.of(context).brightness == Brightness.light
                      ? Colors.black
                      : Colors.white,)
Run Code Online (Sandbox Code Playgroud)

但我的大多数图像都比较复杂,所以我必须为它们加载自定义资源。

正如此处所述,在添加暗模式资产后,我可以不做任何更改地保留 pubspec。我尝试过黑暗模式的不同资产结构,但没有一个有效。

1:

  .../pubspec.yaml
  .../assets/images/img_menu.png
  .../assets/images/dark/img_menu.png
  .../assets/images/0.75x/img_menu.png
  .../assets/images/0.75x/dark/img_menu.png
  .../assets/images/1.5x/img_menu.png
  .../assets/images/1.5x/dark/img_menu.png
  .../assets/images/2.0x/img_menu.png
  .../assets/images/2.0x/dark/img_menu.png
  .../assets/images/3.0x/img_menu.png
  .../assets/images/3.0x/dark/img_menu.png
  .../assets/images/4.0x/img_menu.png
  .../assets/images/4.0x/dark/img_menu.png
Run Code Online (Sandbox Code Playgroud)

2:

  .../pubspec.yaml
  .../assets/images/img_menu.png
  .../assets/images/0.75x/img_menu.png
  .../assets/images/1.5x/img_menu.png
  .../assets/images/2.0x/img_menu.png
  .../assets/images/3.0x/img_menu.png
  .../assets/images/4.0x/img_menu.png
  .../assets/images/dark/img_menu.png
  .../assets/images/dark/0.75x/img_menu.png
  .../assets/images/dark/1.5x/img_menu.png
  .../assets/images/dark/2.0x/img_menu.png
  .../assets/images/dark/3.0x/img_menu.png
  .../assets/images/dark/4.0x/img_menu.png
Run Code Online (Sandbox Code Playgroud)

3:

  .../pubspec.yaml
  .../assets/images/img_menu.png
  .../assets/images/0.75x/img_menu.png
  .../assets/images/1.5x/img_menu.png
  .../assets/images/2.0x/img_menu.png
  .../assets/images/3.0x/img_menu.png
  .../assets/images/4.0x/img_menu.png
  .../assets/dark/images/img_menu.png
  .../assets/dark/images/0.75x/img_menu.png
  .../assets/dark/images/1.5x/img_menu.png
  .../assets/dark/images/2.0x/img_menu.png …
Run Code Online (Sandbox Code Playgroud)

assets image flutter ios-darkmode android-dark-theme

5
推荐指数
1
解决办法
2257
查看次数

Android - 检测用户的操作系统主题是深色还是浅色?

我需要知道用户是否在操作系统级别启用了深色主题,以便我可以在我的应用程序中自动启用深色主题。(不强制深色模式)

android android-10.0 android-dark-theme android-darkmode

5
推荐指数
1
解决办法
5890
查看次数

如何禁用基于Android系统设置的日夜主题自动更改?

到目前为止,我从谷歌了解到,你必须使用Theme.Appcompat.Daynight或 Material Daynight 主题来使你的应用程序支持黑暗模式。并且您需要在valuesvalues-night目录中使用不同的styles.xml。我不愿意让我的应用程序支持深色主题。但是当我将 Android 系统主题(从通知面板)更改为深色时,我的应用程序变黑。我使用Theme.Appcompat.Light作为基本主题,没有为我的应用程序支持黑暗模式做任何事情,但我的应用程序仍然变暗。我是第一次使用cardview,不知道这是否是原因,因为我对android编程很陌生。我们非常欢迎您的一点帮助。请在此处检查屏幕截图:

系统深色模式关闭

系统深色模式开启

android android-theme android-cardview android-dark-theme android-darkmode

5
推荐指数
1
解决办法
4183
查看次数

Android 深色主题将我的颜色从白色转换为黑色

我想将色调设置为可绘制白色,并且当我将应用程序更改为深色主题时,我不知道要更改什么颜色,所以我像这样声明我的颜色。


values/colors.xml
   <color name="white_force">#ffffff</color>

values-night/colors.xml
   <color name="white_force">#ffffff</color>
   

ic_drawable.xml
   <vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="14dp"
    android:height="18dp"
    android:viewportWidth="14"
    android:viewportHeight="18">
        <path
            android:pathData="M12,......,3V15Z"
            android:fillColor="#ffffff" />
    </vector>

layout
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/bookmarkImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:duplicateParentState="true"
        android:padding="@dimen/ds2_space_2dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:src="@drawable/ic_bookmark_white_14" />

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

但是当我将 Tint 设置为可绘制对象时,当我将应用程序更改为深色模式时,它会将颜色 t0 设置为黑色而不是白色。

android android-dark-theme

5
推荐指数
0
解决办法
882
查看次数