gpt4 book ai didi

java - 用户可以更改应用程序主题

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

我希望我的应用程序的用户能够更改应用程序主题。例如,深色、浅色、浅色,带有深色操作栏和设备默认值。这怎么可能,我有一个首选项屏幕,其中有一个列表首选项,其中有四个选项(如上所示)。如何让用户更改应用程序主题?

谢谢

最佳答案

如果您只想使用内置主题并且不需要自定义它们,则非常简单。

作为示例,我将使用 ListPreferece 和如下所示的条目值:

<string-array name="pref_theme_values" translatable="false">
<item>THEME_LIGHT</item>
<item>THEME_DARK</item>
</string-array>

然后您可以使用此方法检索所选值:

public int getThemeId(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
String theme = settings.getString(context.getResources().getString(R.string.pref_theme_key), null);

if (theme == null || theme.equals("THEME_LIGHT")) {
return android.R.style.Theme_Holo_Light;
} else if (theme.equals("THEME_DARK")) {
return android.R.style.Theme_Holo;
}

// default
return android.R.style.Theme_Holo_Light;
}

之后您应该重写onCreate方法:

// onCreate
this.mCurrentTheme = this.getThemeId(this);
this.setTheme(this.mCurrentTheme);
this.setContentView(...); // should be after the setTheme call

onStart 方法(因为您需要在用户从设置页面返回后立即刷新主题)

// onStart
int newTheme = this.getThemeId(this);
if(this.mCurrentTheme != newTheme) {
this.finish();
this.startActivity(new Intent(this, this.getClass()));
return;
}

您还需要以某种方式保存 Activity 状态,以便应用程序在 Activity 重新启动后显示相同的数据。

关于java - 用户可以更改应用程序主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448874/

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