android – 在java中更改主题不会更改背景颜色

android – 在java中更改主题不会更改背景颜色,第1张

概述我正在尝试使用 java代码更改运行时的主题,因为我希望用户能够通过首选项菜单更改应用程序主题. 所以,我让用户主题,然后读取结果如下: if (...) { getApplication().setTheme(R.style.BlackTheme);} else { getApplication().setTheme(R.style.LightTheme);} 不幸的是,由于 我正在尝试使用 java代码更改运行时的主题,因为我希望用户能够通过首选项菜单更改应用程序主题.
所以,我让用户主题,然后读取结果如下:

if (...) {    getApplication().settheme(R.style.Blacktheme);} else {    getApplication().settheme(R.style.lighttheme);}

不幸的是,由于某种原因,这不起作用….
字体颜色从深灰色(浅色主题)略微转变为更亮的灰色(黑色主题)
背景总是保持白/黑(取决于最初在清单文件中选择的主题)

如果我完全删除清单文件中的主题条目,那就好像我会选择黑色主题….

….我有什么东西可以俯瞰吗?

解决方法 我有同样的问题,我这样解决了..

@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    if (getIntent().hasExtra("bundle") && savedInstanceState==null){        savedInstanceState = getIntent().getExtras().getBundle("bundle");    }    //add code for theme    switch(theme)    {    case liGHT:        settheme(R.style.lighttheme);        break;    case BLACK:        settheme(R.style.Blacktheme);        break;    default:    }    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    //code}

此代码用于重新创建活动保存包并更改主题.
你必须编写自己的onSaveInstanceState(Bundle outState);
从API-11开始,您可以使用recreate()方法

Bundle temp_bundle = new Bundle();onSaveInstanceState(temp_bundle);Intent intent = new Intent(this,MainActivity.class);intent.putExtra("bundle",temp_bundle);startActivity(intent);finish();
总结

以上是内存溢出为你收集整理的android – 在java中更改主题不会更改背景颜色全部内容,希望文章能够帮你解决android – 在java中更改主题不会更改背景颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1124294.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存