标签: android-dark-theme

如何在颤振中实现暗模式

我想创建一个 flutter 应用程序,它有 2 个明暗模式主题,这些主题通过应用程序内的开关改变,默认主题是默认的 android 主题。
我需要将一些自定义颜色传递给其他小部件,我不想只配置材质主题。

  • 如何检测用户设备默认主题?
  • 第二个问题是如何为整个应用程序提供一个主题?
  • 第三是如何通过简单的运行时间切换来改变主题?

themes dart flutter android-dark-theme

44
推荐指数
12
解决办法
5万
查看次数

Android Jetpack Compose 预览 UI_MODE_NIGHT_YES 在预览中不显示深色背景

我正在关注https://developer.android.com/jetpack/compose/tutorial

和代码

@Preview(name = "Light Mode")
@Preview(name = "Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED, showBackground = true)
@Preview(name = "Full Preview", showSystemUi = true)
@Composable
fun DefaultPreview() {
    ComposeTutorialTheme {
        MessageCard(Message("Roman", "message body"))
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android android-dark-theme android-darkmode

29
推荐指数
1
解决办法
1万
查看次数

如何以编程方式检测 Android 设备是否处于暗模式?

我正在尝试为我的 Android 应用程序支持 Android Q Dark 主题,但我无法弄清楚如何根据我当前所在的主题导入不同的资产。

我使用官方的 DayNight 主题来制作深色/浅色版本和可绘制对象,只需指向 XML 就很容易,它会根据启用的内容从 values 或 values-night 中选择正确的值。

我想做一些类似的事情,根据主题它会加载资产“priceTag_light.png”或“priceTag_dark.png”。

val inputStream = if(darkIsEnabled) { 
                    assets.open("priceTag_dark.png")
                  } else {
                    assets.open("priceTag_light.png")
                  }
Run Code Online (Sandbox Code Playgroud)

有没有办法让我得到那个标志?

android android-theme kotlin android-dark-theme

17
推荐指数
3
解决办法
6539
查看次数

Android - 深色模式问题:深色背景上的黑色文本

当我启用深色模式时,我的应用程序上的某些菜单看起来很糟糕:非常暗的背景上的黑色文本。我对颜色完全是一个初学者。

在此输入图像描述

我还没有接触过 android studio 上默认颜色设置的任何内容,所以我有默认的两个主题 XML 和 Color Xml:

     <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
     <style name="Theme.TestSS" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
         <!-- Primary brand color. -->
         <item name="colorPrimary">@color/purple_500</item>
         <item name="colorPrimaryVariant">@color/purple_700</item>
         <item name="colorOnPrimary">@color/white</item>
         <!-- Secondary brand color. -->
         <item name="colorSecondary">@color/teal_200</item>
         <item name="colorSecondaryVariant">@color/teal_700</item>
         <item name="colorOnSecondary">@color/black</item>
         <!-- Status bar color. -->
         <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
         <!-- Customize your theme here. -->
     </style>

     <style name="Theme.TestSS.NoActionBar">
          <item name="windowActionBar">false</item>
          <item name="windowNoTitle">true</item>
     </style>

     <style name="Theme.TestSS.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

     <style name="Theme.TestSS.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
   </resources>
Run Code Online (Sandbox Code Playgroud)

和:

    <resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. --> …
Run Code Online (Sandbox Code Playgroud)

android themes colors android-dark-theme android-darkmode

11
推荐指数
3
解决办法
3万
查看次数

在 Ionic 中禁用深色主题

我正在设计一个 Ionic 应用程序,无论用户是否启用了深色主题,我都希望它具有白色背景和黑色文本。

这就是我要的: 禁用深色主题

但是,当我在 Android 手机上启用深色主题时,它会自动转换为:

启用深色主题

我想防止这种情况发生。我在网上搜索并找到了许多描述如何应用黑暗主题的文章,但我没有找到有关禁用它的任何信息。

我想到的一种解决方案是明确启用深色主题,然后为深色主题设置与浅色主题相同的颜色。但是,我认为这种方法可能是不可取的,因为它涉及编写大量冗余代码。

你能想到任何替代解决方案吗?

android ionic-framework android-dark-theme

10
推荐指数
4
解决办法
1万
查看次数

深色模式下颜色反转的通知

在 android 10 上,当启用暗模式时,来自自定义通知应用程序的通知中会显示负面图像,即颜色反转的图像。

如何防止这种情况发生?

浅色主题通知:

图片1

深色主题通知:

图像2

android push-notification android-notifications android-dark-theme

9
推荐指数
1
解决办法
1057
查看次数

WebView重置UiMode并打破黑暗主题

我们的应用程序依赖于让我们从和AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)中选取浅色和深色主题颜色values/colorsvalues-night/colors

但是每次我们尝试使用 时WebView,它都会从重置 UiMode 开始,并且我们的应用程序会混淆为我们的主题选择哪些颜色值

有些人在这里这里详细讨论了这个问题

有人遇到类似的问题吗?

android android-webview android-theme android-dark-theme

8
推荐指数
1
解决办法
4003
查看次数

Android Jetpack Compose - 浅色主题更改后底部工作表不会展开

我正在使用 jetpack compose 1.0.0,BottomSheetScaffold 工作正常,但是在我添加了一个功能来使用按钮将主题从浅色更改为深色后,在更改主题后,底部工作表将不会展开。我正在使用 Application 类的属性来处理主题状态。这是一些代码:

使用底部工作表的屏幕,顺便说一句,这是在片段上

MyAppTheme(application.isDark.value) {

    val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(
        bottomSheetState = BottomSheetState(BottomSheetValue.Collapsed)
    )
    val coroutineScope = rememberCoroutineScope()

    BottomSheetScaffold(
        scaffoldState = bottomSheetScaffoldState,
        sheetContent = {
            HomeBottomSheet(
                onCancelClick = {
                    coroutineScope.launch {
                        bottomSheetScaffoldState.bottomSheetState.collapse()
                    }
                },
                onDoneClick = { text ->
                    Toast.makeText(requireContext(), text, Toast.LENGTH_LONG)
                        .show()
                }
            )
        },
        sheetPeekHeight = 0.dp
    ) {
        HomeScreen(
            darkTheme = application.isDark.value,
            darkThemeToggleClick = application::toggleDarkTheme,
            onHistoryClick = {
                findNavController().navigate(R.id.goToHistory)
            },
            onAddClick = {
                coroutineScope.launch {
                    bottomSheetScaffoldState.bottomSheetState.expand()
                }
            }
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

应用:

class …
Run Code Online (Sandbox Code Playgroud)

android bottom-sheet android-jetpack-compose android-dark-theme

7
推荐指数
1
解决办法
2713
查看次数

触发 Widget 布局的 Android 10 主题更新

随着 Android 10 的发布,多个小部件(Gmail、Google 新闻、三星电子邮件)现在会在切换深色模式时更新其主题。我正在尝试复制这种行为。我有一个带有 AppWidgetProvider 和 RemoteViewsFactory 的列表视图小部件。但是,当切换深色模式时,ListView 项目会切换到深色主题,而不是布局本身:

深色模式关闭:

深色模式关闭

深色模式开启:

深色模式开启

在我的代码中,我在 AppWidgetProvider 的 OnUpdate() 方法中设置布局:

    override fun onUpdate(
    context: Context,
    appWidgetManager: AppWidgetManager?,
    appWidgetIds: IntArray?
) {

    Log.d(TAG, "Updating Transaction Widget")

    GlobalScope.launch(Dispatchers.IO ) {
        updateTransactionTable(context)
        for (i in appWidgetIds!!.indices) {
            val layout: RemoteViews = buildLayout(context, appWidgetIds[i])
            appWidgetManager!!.updateAppWidget(appWidgetIds[i], layout)
        }
        super.onUpdate(context, appWidgetManager, appWidgetIds)
    }
}
Run Code Online (Sandbox Code Playgroud)

切换暗模式时不会调用 onUpdate。但是,当切换暗模式时,我似乎找不到在 AppWidgetProvider 中调用的任何方法,因此我不确定在哪里调用新的布局构建,甚至不知道如何检测何时需要更改。

任何帮助将非常感激。

android android-widget kotlin android-dark-theme

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

防止在不增加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
查看次数