Android Studio 在应用中包含 "change color" 个选项

Android Studio include "change color" options in app

我正在编写一个 Android 应用程序,我正在尝试包含一个 "change color" 选项(例如在设置屏幕中)。 我发现 "colors.xml" 文件中有三种颜色 (app->src->main->res->values):

<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 来更改它我正在尝试重置 "setContentView"。

我必须在哪里设置所有的主题?在清单中?因为当我在 OnCreate 中设置它时,我将覆盖我在 "settings"-Activity 中所做的更改,或者我错了吗?

这三种颜色在应用程序中都默认使用activity,Accent颜色是最引人注目的,因为它默认是浮动按钮的颜色。如果您想做的是根据“共享偏好以及如何根据用户的选择使用不同的颜色组成主题”的用户偏好研究来更改应用程序的 color/theme。 :)

你必须使用样式。

假设您在 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 上查看此示例项目。

谢谢