问题标签 [android-night-mode]

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.

0 投票
1 回答
295 浏览

android - 谁在设置 getDefaultNightMode()

我想在我的应用程序中添加Night/Day主题,我在网上阅读了很多文章,但我仍然不明白这个方法是谁设置的,​​是Android OS,还是我必须创建一个基于在一天中的季节和时间设置DefaultNightMode()?

0 投票
0 回答
62 浏览

android - Kitkat API 19 中的文本问题 Appcompatedelegate.setDefaultNightMode(黑底黑字)

当夜间模式打开时,我的应用程序出现问题,文本变黑,背景变黑,仅在 KitKat API 19 中,请帮助?谢谢你

0 投票
1 回答
969 浏览

android - Android通过AppCompatPreferenceActivity模板设置夜间模式取消点击首选项标题

我的目标:通过偏好设置夜间模式并实时更新 UI。

到目前为止:完成。但是,当我单击返回标题的首选项屏幕时,我无法再次返回不同的首选项屏幕。

详细说明:那时我的设置非常简单。我遵循SettingsActivity的Android Studio(3.1.4)设置的预设,具有AppCompatPreferenceActivity模板。我有一个主屏幕和两个更深的屏幕。

我的第一个屏幕有两个选择:General 和 About。选择 General 后,我加载了一个带有 Switch 首选项的 GeneralPreferenceFragment,即“夜间模式”。如果我设置它,它会实时切换主题,当我返回时,它也会在我的第一个设置屏幕上完成。

问题:当我更改主题时,返回主设置屏幕并尝试重新访问常规或关于屏幕,我不能再深入了!如果我将偏好切换为偶数,以便最终进入初始主题,我可以像什么都没发生一样访问它们。

SettingsActivity 类

我认为在我的“重新创建”调用中会出现问题。这就像首选项列表的 onItemClickListener 为 null 或类似的东西。

任何人都可以帮忙吗?

编辑:简化,现在我的所有逻辑都在 SettingsActivity 类中,我不需要在抽象类中拥有它

0 投票
2 回答
324 浏览

java - 如何让我的主题以编程方式延续到其他活动中?

我在我的应用程序的设置页面中创建了一个功能,其中包含一个开关 - 按下时 - 切换到辅助“夜间”主题。我大部分时间都按照本教程进行操作。但是,我不知道如何将这种夜间模式带入我的其他活动中?我试过在我的主要活动中调用“如果开关检查”,但它显然没有看到那个开关。我主要需要知道的是,如何检查另一个活动中的开关状态?这甚至是正确的做法吗?让我知道我是否在这个问题上遗漏了任何其他内容。

// ======== 设置页面的代码 ======== //

// ======== SharedPref 代码 ======== //

0 投票
1 回答
1049 浏览

android - Android错误在夜间模式下加载错误的颜色

免责声明:我已经找到了解决此问题的方法,但想为其他人发布问题和答案,因为我花了很长时间才弄清楚为什么会发生这种情况。

我遇到了一个奇怪的问题,在夜间模式下打开我的应用程序时,一些 UI 以正确的夜间模式颜色加载,而一些 UI 以正常颜色加载。

0 投票
4 回答
6226 浏览

android - 夜间模式更改后刷新后台活动

我已经看到很多关于在更改应用程序的夜间模式后重新创建当前活动的问题和答案,但我没有看到关于如何刷新回栈活动的任何内容。

假设我有后台A > B > C。Activity C 允许通过调用来改变夜间模式AppCompatDelegate.setDefaultNightMode()。在此调用之后,当前 Activity (C) 可以使用delegate.applyDayNight()或刷新其主题recreate()

但是,当用户导航回 B 或 A 时,活动仍使用“旧”模式,无论白天还是晚上。

我试图在活动中添加类似的东西:

但这似乎不起作用。

我做了多次尝试来解决这个问题:

一个想法是完全按照此处此处的建议重新创建后台堆栈,但是由于后台堆栈不是静态的,因此对我来说不可行。

另一个想法是有一个类来处理夜间模式更改并提供 LiveData。每个 Activity 都会监听 LiveData 的模式更改并调用recreate(). 但是,我们陷入了一个无限循环,因为 Activity 会在开始监听 LiveData 后直接重新创建。

我很难相信我是第一个在更改夜间模式后尝试从后台刷新活动的人。我错过了什么?

谢谢!

0 投票
1 回答
1591 浏览

android - MODE_NIGHT_NO 之后的 MODE_NIGHT_FOLLOW_SYSTEM

切换到 MODE_NIGHT_FOLLOW_SYSTEM 模式时,将应用上次使用的模式:

应用程序以跟随系统模式启动:应用程序风格较轻。

我正在切换到夜间模式:应用程序风格很暗。

我正在切换回遵循系统模式:应用程序样式很暗。

我正在切换到白天模式:应用程序风格很轻。

我正在切换回遵循系统模式:应用程序风格很轻。

SdkVersion:28,在 Android 4.0.3(模拟器)和 6.0.1(真机)上测试。

我的代码:

活动:

和风格:

我究竟做错了什么?

0 投票
1 回答
996 浏览

android - Android 9 Pie 上的省电模式(和夜间模式)重新启动整个活动,如何防止这种情况发生?

当我在装有 Android 9 Pie 的设备(Google Pixel 2)上运行我的应用程序并打开(或关闭)节电模式时,整个活动会立即重新启动。当我在 6、7 和 8 等较低版本的 Android 上打开省电模式时,应用程序会正常运行而无需重新启动。是否也可以在 Android 9 上阻止这些重新启动?

我对其进行了调查,发现当您打开省电模式时,即使是新的原生夜间模式也会自动打开。因此,我尝试通过“设置 - 开发人员选项”仅打开夜间模式,并以与打开省电模式相同的方式重新启动活动。因此,这种重新启动可能是由夜间模式引起的。

注意:不要混淆“夜灯”、“黑暗主题”和“夜间模式”,这些是不同的东西,问题仅在于“夜间模式”。

这是来自调试器的堆栈跟踪,可以看出,操作系统试图通过停止它来重新启动活动(然后它再次创建它)。

我在这里读到https://developer.android.com/about/versions/pie/power,在新的 Android 上,省电模式有一些变化,但我没有找到任何细节和解决可能问题的任何建议。你能帮我么?

实际结果:我运行我的应用程序并打开/关闭电池保护程序 - > 整个主要活动重新启动,因此它被停止,然后它尝试以新创建的方式运行。

预期结果:我运行我的应用程序并打开/关闭省电模式 -> 我的应用程序没有任何反应,它继续它的主要活动,因为什么也没发生。

先感谢您。

0 投票
1 回答
508 浏览

android - 动态更改为暗/亮模式时闪烁

我有一个要求,当点击一个开关时,我需要将模式从暗转换为亮,反之亦然。但扭曲的部分是,我不想完成活动并重新启动它,因为我不希望用户注意到活动娱乐的闪光/闪烁。因此,我使用Activity.this.recreate(). 现在,这适用于我迄今为止检查的所有 API 级别和手机。但是,在Android Pie中,即使在使用时它也会显示一种闪光Activity.this.recreate()

任何人都请建议我一些方法来解决Android Pie中的问题,或者一些更好的方法来解决我的问题。

0 投票
2 回答
1321 浏览

java - Android can't inflate layout file with attrs values

I am working on an app that can switch between night mode and day mode i made an attrs file with the values

and i made corresponding two styles that are for day mode and night mode respectively

and i added the attrs values to the layout in place of background and textColor attributes so i can switch between them

Here is the Layout file

I am implementing a ViewPager where i am inflating that layout file, previously without implementing the attrs it worked fine, but when i am now using the attrs values inside the layout xml file it is crashing the app

Here is the Viewpager Adapter where i am inflating the layout file

So when running the app it is giving me this error

What am i doing wrong here ? can't find the proper solution for this online so i am creating this thread.