gpt4 book ai didi

java - 更改 Activity 的主题/样式后重绘/刷新布局

转载 作者:行者123 更新时间:2023-12-01 16:50:16 24 4
gpt4 key购买 nike

我在 styles.xml 中定义了两个主题:

<style name="AppTheme" parent="android:Theme.Holo"></style>

<style name="AppLightTheme" parent="android:Theme.Holo.Light">
<item name="android:background">#FFFFFF</item>
</style>

这就是我设置 Activity 主题的方式:

protected void changeTheme(boolean dark) {
if (dark) {
setTheme(R.style.AppTheme);
} else {
setTheme(R.style.AppLightTheme);
}
}

现在,在我更改主题后,只有背景保持不变,直到我打开不同的布局并返回。我使用的是 DrawerLayout,所以我基本上在布局之间切换。

如何重新绘制或刷新它?

这是我尝试过的所有方法,但没有做任何事情:

ViewGroup vg = findViewById (R.id.mainLayout);
vg.invalidate();

.

Intent intent = getIntent(); //this one is obvious, had to include so you don't try this unnecesarry.. code
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(intent);

.

getWindow().getDecorView().findViewById(android.R.id.content).invalidate(); 

.

getWindow().getDecorView().findViewById(android.R.id.content).refreshDrawableState();

.

getWindow().getDecorView().findViewById(android.R.id.content).requestLayout();

.

findViewById(android.R.id.content).invalidate();

.

myLayout.invalidate();

有什么想法吗?

最佳答案

您可以调用recreate()重新创建您的 Activity 并导致使用新主题重新创建所有 View 。

protected void changeTheme(boolean dark) {
if (dark) {
setTheme(R.style.AppTheme);
} else {
setTheme(R.style.AppLightTheme);
}
recreate();
}

关于java - 更改 Activity 的主题/样式后重绘/刷新布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657375/

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