首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从第一个片段开始的昼夜模式更改

从第一个片段开始的昼夜模式更改
EN

Stack Overflow用户
提问于 2022-02-10 15:58:47
回答 1查看 352关注 0票数 0

我在白天/晚上的时候遇到了一个问题:从片段改变模式,如果不重新创建父活动,模式就不会改变,但是我想从片段中改变模式,而不从当前片段中移动。

代码语言:javascript
运行
复制
public void setNightMode(Context target, boolean state){

    //UiModeManager uiManager = (UiModeManager) target.getSystemService(Context.UI_MODE_SERVICE);
    UiModeManager uiManager = (UiModeManager) getActivity().getSystemService(Context.UI_MODE_SERVICE);

    if (state) {
        //setTheme(R.style.DarkTheme);
        if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
            //setting up Night Mode...
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

        } else {
            uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
        }
        //uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
        night_mode = false;
        //homeBinding.toolbar.setHeaderColour(HomeActivity.this, false);
    } else {
        if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

        } else {
            uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
        }
        night_mode = true;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-02-10 19:02:01

更改为夜间模式:

代码语言:javascript
运行
复制
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES

并转换为光模式:

代码语言:javascript
运行
复制
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_NO

此外,为了使用此特性,您必须实现androidX appcompat库。

代码语言:javascript
运行
复制
implementation 'androidx.appcompat:appcompat:1.4.0'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71068279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档