AppCompat DayNight 主题始终显示为 Light 主题?

2024-04-29

我正在使用 AppCompat 中引入的新 Theme.AppCompat.DayNight 主题版本23.2 http://android-developers.blogspot.com/2016/02/android-support-library-232.html,但它不会自动在白天(浅色)和夜晚(深色)主题之间切换,而是始终显示为浅色主题。我怎样才能让它切换到黑暗主题?


如指定同一篇 23.2 博客文章 http://android-developers.blogspot.com/2016/02/android-support-library-232.html,

默认情况下,是否为‘night’将匹配系统值(来自UiModeManager.getNightMode() http://developer.android.com/reference/android/app/UiModeManager.html#getNightMode())

然而,到目前为止,这实际上意味着它相当于MODE_NIGHT_NO因为唯一触发夜间模式的是姜饼时代的汽车码头。

这意味着在当前设备上,使用 DayNight 主题时查看深色主题的唯一方法是使用 NIGHT_MODE_YES 或 NIGHT_MODE_AUTO

正如官方帖子和克里斯·贝恩斯 (Chris Banes) 在 DayNight 上的帖子 https://medium.com/@chrisbanes/appcompat-v23-2-daynight-d10f90c83e94,您可以在全局级别或本地级别更改模式。

全球层面依赖于静态AppCompatDelegate.setDefaultNightMode()方法,它设置整个应用程序的日夜模式。由于这仅在您的进程处于活动状态时适用(即,它只是内存中的标志),因此您需要确保每次启动应用程序时都设置它。 Chris 的帖子推荐的一种方法是将其设置在自定义 Application 类的静态方法中:

static {
    AppCompatDelegate.setDefaultNightMode(
        AppCompatDelegate.MODE_NIGHT_...);
}
public class MyApplication extends Application {

相反,如果您只想更改单个活动/对话框的模式,您可以调用getDelegate().setLocalNightMode():

public class MyActivity extends AppCompatActivity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState == null) {
      // Set the local night mode to some value
      getDelegate().setLocalNightMode(
                AppCompatDelegate.MODE_NIGHT_...);
      // Now recreate for it to take effect
      recreate();
    }
  }
}

这仅更改单个实例 - 您会注意到对recreate()- 已经膨胀的视图不会受到夜间模式更改的影响,因此您可以强制活动重新创建自身以获取更新的值。

当然,克里斯的帖子也指出

另请记住,默认值为 MODE_NIGHT_FOLLOW_SYSTEM,因此如果我们将来向平台添加用户可见的设置,AppCompat 将自动使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AppCompat DayNight 主题始终显示为 Light 主题? 的相关文章

随机推荐

  • Zip 文件是使用 Windows 路径分隔符创建的

    我使用下面的代码创建一个 zip 文件 Zip 已正确创建 然后在我的程序中 我尝试从此文件中获取 zip 条目 如果我打印一个 zip 条目名称 我会得到 Windows 路径分隔符 例如 a b c 但我需要这样a b c 我还没有发布
  • 为什么连接没有在我的 iSeries/ASP.NET MVC 4 应用程序中重用?

    我们正在 Windows 2008 服务器场上运行 MVC 4 Web 应用程序 我们一直在尝试将服务器场升级到 Windows 2008 R2 64 位服务器 但在 iSeries 运行 V7R1 上遇到了连接池问题 我们经常调用 DB2
  • C#中如何判断一个数是正数还是负数?

    C 中如何判断一个数是正数还是负数 bool positive number gt 0 bool negative number lt 0
  • Python while 循环查找素数

    作为 Python 的第一个练习 我尝试编写一个使用循环来查找素数的程序 一切都适用于 for 循环 所以我尝试使用 while 循环 这可行 但程序返回一些不正确的数字 import math looking for all primes
  • “致命错误:调用未定义的函数 socket_create()”,即使在 php.ini 中启用

    我有一个奇怪的 PHP 问题 我在 Windows 7 的 IIS 上运行 PHP 5 当我在 PHP 文件中调用 socket create 时 如下所示 sock socket create AF INET SOCK DGRAM get
  • 如何为任何 exe 创建安装程序?

    我有 NET exe 我想为此创建一个设置 并且在任何登录或重新启动后应自动调用此 exe 当您部署 NET 应用程序时 可以采用多种方法来应对这一挑战 选择安装程序策略时 您必须考虑许多问题 这些包括 我计划如何分发该软件 该软件是否应该
  • 全局变量和静态变量存储在内存段的哪里?

    在我的链接器脚本中 起始地址和大小如下 code start 90400000 code end 90a00000 data start 90b00000 size 3MB bss start 91200000 size 1MB 但是当我声
  • 如何在 Amazon Linux 上安装最新版本的 GDAL?

    我想安装GDAL https gdal org 在运行 Amazon Linux 的 EC2 实例上 我认为它基于 RHEL 6 如果可能的话 我想避免从源代码编译 EPEL Yum 存储库中包含的 GDAL 版本对于我的目的来说太旧了 g
  • Akka 和 ReactiveMongo

    我正在尝试找到在集群工作人员之间共享相同连接池的最佳方法 我有以下结构 Master Actor gt Worker Actors 最多 100 个或更多 gt MongoDB 我想在工作人员和 MongoDB 之间放置reactivemo
  • 如何在 VC++ 中使用 _W64 和 __w64?

    有这样的事情 w64 http msdn microsoft com en us library s04b5w00 VS 71 aspx在 Visual C 9 中 我在尝试将本机 C DLL 移植到 64 位时遇到了它 特别是在crtde
  • JavaFX 中按下按钮的样式

    我有一个Button in my FXML文件 我在下面给它一个样式CSS button fx background color linear gradient ff5400 be1d00 fx background radius 30 f
  • 如何在 WPF 中绑定用户控件作为 DataGridTemplateColumn 失败

    我想使用来自不同程序集的用户控件作为 DataGridTemplateColumn 我已经看过很多例子和问题 比如this https stackoverflow com questions 13956767 binding to cust
  • 将 Microsoft.Office.Interop.Excel.Application 转换为 byte[]

    我正在代码中创建一个excel文件 如下所示 Microsoft Office Interop Excel Application excelFile CreateExcelFile 现在我想将此 excel 文件转换为 byte 而不保存
  • 旋转 ImageView 及其背景而不裁剪

    我已经进行了很多搜索 但找不到解决我的问题的方法 我不能使用android rotation因为我希望这个应用程序与 Android API 11 版本兼容 我的问题与此类似 在 Android 中旋转视图 https stackoverf
  • 如何处理解析器中的错误

    我正在尝试使用解析器来打造更好的用户体验 在幸福的道路上 一切都进展顺利 我似乎无法弄清楚如何处理异常 我的解析器调用一个服务 该服务会访问一个 webapi 项目 一个例子 Foo解析器 resolve route ActivatedRo
  • UML - 关联或聚合(简单的代码片段)

    有多少书自相矛盾 真让我抓狂 Class A class B void UseA A a some say this is an association no reference is held but communication is p
  • REST DELETE 真的是幂等的吗?

    DELETE 应该是幂等的 如果我删除http example com account 123 http example com account 123它将删除该帐户 如果我再次这样做 我会收到 404 错误吗 因为该帐户已不存在 如果我尝
  • SSIS - 删除行

    我是 SSIS 新手 需要这方面的帮助 我找到了一个article http consultingblogs emc com jamiethomson archive 2006 09 12 SSIS 3A00 Checking if a r
  • 我可以在 Mercurial 中进行分支而不克隆存储库吗?

    最近 我开始尝试 Mercurial 因为它总是因其简单性和 正常工作 原则而吸引我 或者至少 其他人总是这么描述它 他们通常也将其描述为 实际上与 git 相同 只有一些你不会注意到的细微变化 只是我发现事实并非如此 我的汞分支有问题 如
  • AppCompat DayNight 主题始终显示为 Light 主题?

    我正在使用 AppCompat 中引入的新 Theme AppCompat DayNight 主题版本23 2 http android developers blogspot com 2016 02 android support lib