Android Studio包含"更改颜色" app中的选项

时间:2017-05-02 12:40:45

标签: android mobile-development

我正在编写一个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中完成的更改,或者我错了吗?

2 个答案:

答案 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上查看此示例项目。

由于