问题标签 [android-dark-theme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何以编程方式启用夜间模式?
我正在寻找一种使用 Android 代码以编程方式启用夜间模式的方法:
我的屏幕上没有任何变化,夜间模式仍处于禁用状态。根据这个链接
无需启用 carMode 或deskMode。我在 Android Studio 上有以下 logcat:
android - setDefaultNightMode() 仅在 PreferenceFragment 中的第二次调用后有效
我正在努力在我的应用程序中实现暗模式。现在我尝试使用PreferenceFragment
嵌套在AppCompatActivity
. 该应用程序的行为是这样的,从作为默认值的浅色主题开始:
- 如果我在 ListPreference 中选择“深色”,则首选项的摘要会更改,但 UI 在此活动和所有其他活动中保持浅色。
- 如果我第二次选择“深色”,活动将切换到深色主题,以及后台堆栈中的其他活动。
- 当我想切换回浅色主题时,反过来也会发生同样的事情。
所以基本上一切正常,但您必须在 ListPreference 中选择所需的值两次。ListPreference 的代码:
到目前为止我尝试了什么:
- 声明
getActivity.recreate()
前调用return true;
- 在短暂
getActivity.recreate()
延迟后使用Handler
- 当布尔值为 true时调用父 Activity
this.recreate()
的方法onResume()
changedDesignSetting
我感谢进一步的帮助。
android - 如果 Android 设备处于暗模式,我如何以编程方式检测?
我正在尝试为我的 Android 应用程序支持 Android Q Dark 主题,但我不知道如何根据我当前所在的主题导入不同的资产。
我使用官方 DayNight 主题来制作深色/浅色版本,并且对于可绘制对象非常容易指向 XML,它会根据启用的内容从 values 或 values-night 中选择正确的值。
我想做类似的事情,根据主题它会加载资产“priceTag_light.png”或“priceTag_dark.png”。
有没有办法得到那面旗帜?
android - 应用更新后保持/恢复默认暗模式设置
我正在实施称为暗模式的新 Android 10 功能,这里有一些文档。它建议使用这条线进行切换:
这工作正常(打开,关闭,系统) - 我正在安装调试应用程序,在我的应用程序设置中设置正确的模式,所有Activities
重新启动都根据需要主题。我可以退出应用程序,强制关闭,返回,我的设置仍然存在。问题是当我再次构建 apk 并安装时(即使没有任何代码更改,只需在 AS 中使用 Shift + F10)然后根据来源getDefaultNightMode()
返回MODE_NIGHT_UNSPECIFIED
默认设置和回退到系统依赖。看起来未来的应用更新将重置暗模式。我怎样才能防止这种情况发生,我错过了什么吗?
PS。是的,我可以自己存储设置模式并强制恢复何时AppCompatDelegate
返回默认模式,但请从上面的链接文档中查看此注释:
注意:从 AppCompat v1.1.0 开始,setDefaultNightMode() 会自动重新创建任何已启动的活动。
我不想在每次更新后首次启动时(可能)闪烁 UI...
android - Android Q 中的深色主题配置更改
我想在我的应用程序中实现 android 10 深色主题,我有以下情况:
SYSTEM_DEFAULT, NIGHT_MODE, LIGHT_MODE
问题是当我从应用程序内部将主题从夜间或浅色更改为 system_default 时,它无法理解系统是处于浅色模式还是深色模式。所以主题不会更新。
我试过谷歌的黑暗主题 https://developer.android.com/guide/topics/ui/look-and-feel/darktheme
并且实施配置对我仍然没有好处,因为如果用户在系统默认设置为天时将日期更改为系统默认设置,我不想重新创建我的活动。
无论如何我可以处理这个吗?
编辑:
android - configuration.setLocale(locale) 不适用于 AppCompatDelegate.setDefaultNightMode
如果我设置AppCompatDelegate.setDefaultNightMode
了暗模式并且系统不暗,则Configuration.setLocale
不起作用。我更改了语言环境,例如从En
to It
,所有字符串仍然以系统语言显示。
如果我设置相同的系统夜间模式(Android 10)没有问题。android 9 或更低版本也存在同样的问题:如果我在应用程序中设置了暗模式并更改了上下文语言,则活动会根据系统语言显示文本。
android - 深色主题更改时,Android 10 通知颜色不会更改
我有一些操作的通知。我使用Notification.Builder为动作和图标着色设置颜色。这是创建通知的完整代码。
颜色在和 中R.color.notification_accent
都声明了,并且有不同的颜色。该应用程序的基本主题也从. 当在设备中启用/禁用深色主题时,整个应用程序在主题之间正确更改。values
values-night
Theme.MaterialComponents.DayNight
当我创建通知时,它总是正确创建,所以当深色主题打开时,使用颜色values-night
,当它关闭时使用values
颜色。
问题是当主题发生变化并且通知已经可见时。我可以看到通知实际上正在发生变化,因为背景从暗变为亮,但动作的颜色没有改变。
我猜这是因为颜色不是通知主题的一部分,但我不确定如何处理,或者它是否是Notification.Builder中的错误。
编辑:此行为发生在运行 API 29 的模拟器上。在设备上运行应用程序时,行为是正确的,颜色会发生变化。我正在回答自己说要使用设备的问题。
android - Flutter:根据设备明暗模式更改应用程序亮度
设置
在颤振应用程序的主类中:
您可以将ThemeData
亮度设置为暗或亮。(我认为仅从 Android OS 10.0,API 29 开始)您可以在设备设置中选择屏幕色调(浅色 | 深色)。
示例(OP7 专业版)
设置 > 自定义 > 色调 > 多彩 | 浅色 |深色
当处于暗模式并打开某些应用程序(例如 chrome)时,应用程序设置为暗。打开其他应用程序不会发生这种情况。
问题:
1)如果您不设置任何ThemeData
亮度,您的应用程序亮度是否会根据设备色调设置动态更新?(不能自己测试这个atm)
2)如果不是,您如何ThemeData
根据设备屏幕色调设置动态更改亮度?