我想在用户选择首选项文件或设置中的设置时更改清单样式。我在apk中有一个设置,其中包含一个包含三个条目{
"plugins": [
["babel-relay-plugin-loader"]
],
"presets": [
"es2015",
"stage-0",
"react"
]
}
的首选项列表。我想在用户点击样式时更改样式颜色,例如{Style_1, Style_2, Style_3}
。我怎么能这样做?
答案 0 :(得分:1)
是的,您可以像这样设置主题:
activity.setTheme(R.style.theme_large);
activity.setTheme(R.style.theme_small);
<style name="theme_large">
<item name="main_background">@drawable/background_red</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="button_light">@color/button_light</item>
</style>
<style name="theme_small">
<item name="main_background">@drawable/background_red</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="button_light">@color/button_light</item>
</style>
答案 1 :(得分:1)
创建两种风格
setTheme(darkTheme ? R.style.AppThemeDark : R.style.AppThemeLight);
<style name="AppThemeDark">
<item name="main_background">@drawable/background_dark</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="button_light">@color/button_dark</item>
</style>
<style name="AppThemeLight">
<item name="main_background">@drawable/background_light</item>
<item name="colorPrimaryDark">@color/colorPrimaryLight</item>
<item name="button_light">@color/button_light</item>
</style>
答案 2 :(得分:1)
是的,你可以轻松地做到这一点,我一直这样做。
只需在setContentView之前调用此方法,如下所示:
setTheme(R.style.Theme);
setContentView(R.layout.activity_layout);
现在我要做的是我在app常量中取一个静态int变量并根据我的主题进行更改。然后我做这样的事情
//This is in my constants file
public static int CURRENT_THEME = R.style.AppTheme;
//This is in my onCreate of every Activity.
setTheme(Constants.CURRENT_THEME);
setContentView(R.layout.activity_layout);
希望这有帮助。
答案 3 :(得分:0)
我认为,单击按钮或选择选项后设置主题可能会对活动处理起来很苛刻。 我建议你在按钮点击时重新加载你的活动,但在此之前只需保存 style_name ,用户想申请内部记忆或共享 偏好设置。您只需查看here即可应用共享 偏好。
在您的活动的 onCreate 开始时,应用该共享 偏好设置的提取部分并应用用户指示的主题。这将帮助您保留该用户的主题,直到他/她卸载该应用程序或清除应用程序数据。 如果他/她第一次使用该应用程序,则存储的 style_name 字符串将为null,因此使用默认主题加载您的应用程序。
您只需使用以下代码点击按钮即可重新加载您的活动:
public void onClick (View v){
Intent intent = getIntent();
finish();
startActivity(intent);
}
希望它有所帮助!!