gpt4 book ai didi

android - AppCompat DayNight 主题不适用于 Android 6.0?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:30 25 4
gpt4 key购买 nike

我正在使用 Android 支持库 23.2 添加的新 Theme.AppCompat.DayNight

在 Android 5.1 上运行良好。

在 Android 6.0 上,Activity 看起来像使用浅色主题,但对话框看起来像使用深色主题。

我的应用类:

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

我的样式.xml

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="Dialog.Alert" parent="Theme.AppCompat.DayNight.Dialog.Alert"/>

显示对话框的代码:

new AlertDialog.Builder(mContext, R.style.Dialog_Alert)
.setTitle("Title")
.setMessage("Message")
.show();

最佳答案

Google 已经修复它以支持 23.2.1

旧答案:

在Android 6.0上,系统的夜间模式设置默认为UiModeManager.MODE_NIGHT_NO,它会在调用onCreate之前更改Resources.Configuration.uiMode .但是,支持库在 AppCompatActivity 中的 onCreate 中应用其夜间模式设置,为时已晚,我认为这就是它不能在 6.0 上运行的原因。

因此,如果我们可以重写 AppCompatActivity 中的 getResources() 并更改 uiMode

旧答案:

这里是修复在 Android 6.0 上不工作的代码

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

@Override
public void onCreate() {
super.onCreate();

// add this code for 6.0
// DO NOT DO THIS. It will trigger a system wide night mode.
// This is the old answer. Just update appcompat.
// UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
// uiManager.setNightMode(UiModeManager.MODE_NIGHT_);
}
}

注意:如果您的应用没有位置权限,您的应用将不会得到与系统相同的计算结果。这意味着支持库可能认为现在是晚上,而系统没有,这将导致您的一些 UI 看起来很暗一些亮。

最好的方法是等待 Google 修复它。

关于android - AppCompat DayNight 主题不适用于 Android 6.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com