我正在编写一个Android应用程序,我正在尝试包含一个"更改颜色"选项(例如在设置屏幕中)。 我发现的是" colors.xml"中有三种颜色。文件(app-> src-> main-> res->值):
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#ff4040</color>
如果可能的话,想法是通过按下按钮来改变这些颜色,例如(红色按钮将变为红色主题,蓝色变为蓝色主题,等等)。 无论如何这可能吗?如果没有,你有不同的想法改变颜色? 如果这样的问题已经存在,我很抱歉。我没找到任何东西,但我也不知道该找什么。
提前谢谢你:)
编辑:
目前,我正在尝试这样:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_dark:
setTheme(R.style.BlackTheme);
Toast.makeText(context, "Dark", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_light:
setTheme(R.style.LightTheme);
Toast.makeText(context, "Light", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_settings_save:
Intent i = new Intent(SettingsActivity.this, MainActivity.class);
startActivity(i);
finish();
break;
}
}
意思是,我想通过在按下保存按钮时调用MainActivity中的onCreate来改变它我试图重置&#34; setContentView&#34;。
我在哪里设置所有主题?在清单?因为当我在OnCreate中设置它时,我将覆盖在&#34;设置&#34; -Activity中完成的更改,或者我错了吗?
答案 0 :(得分:0)
默认情况下,这三种颜色都在应用程序活动中使用,Accent颜色最明显,因为默认情况下它是浮动按钮的颜色。如果您想要做的是根据用户偏好研究“共享首选项以及如何根据用户的选择创建构成主题的不同颜色”来更改应用程序的颜色/主题。 :)
答案 1 :(得分:0)
你必须使用风格。
假设style.xml文件中有两个样式。
<style name="AppThemeRed" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/red</item>
<item name="colorPrimaryDark">@color/redDark</item>
<item name="colorAccent">@color/red</item>
</style>
<style name="AppThemeBlue" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryDark">@color/blueDark</item>
<item name="colorAccent">@color/blue</item>
</style>
现在按下按钮,你必须从java设置样式。例如:
setTheme(R.style.AppThemeRed);
setContentView(R.layout.activity_main);
使用样式colorPrimary只需在布局中使用?colorPrimary 代替 @ color / colorPrimary
您可以在GitHub上查看此示例项目。
由于