【问题标题】:Android Studio include "change color" options in appAndroid Studio 在应用程序中包含“更改颜色”选项
【发布时间】:2017-09-29 23:49:12
【问题描述】:

我正在编写一个 Android 应用程序,并且我正在尝试包含一个“更改颜色”选项(例如在设置屏幕中)。 我发现“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 中设置它时,我会覆盖我在“设置”-Activity 中所做的更改,还是我错了?

【问题讨论】:

    标签: android mobile-development


    【解决方案1】:

    你必须使用样式。

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

    谢谢

    【讨论】:

    • 在原帖中添加信息,比这里更容易阅读。
    • 我只是更新我的答案。我还为您创建了一个新的存储库。希望您的问题现在可以解决。
    • 再次您好。我现在这样做了(通过使用共享偏好,因为我有多个活动)但是有一个新问题。再次它与颜色有关,但我会说这是一个不同的问题。我应该打开一个新问题还是在此处添加?
    • 如果您当前的问题解决了,那么首先将答案标记为正确...然后提出一个新问题并在此处通过评论@EXQulsllt 提供问题链接
    • 感谢您的帮助!虽然我做的有点不同,但你的解决方案让我走上了正确的道路:) 这是我的新问题的链接,这整个颜色的东西已经引起了:stackoverflow.com/questions/43809244/…
    【解决方案2】:

    这三种颜色都默认用在应用Activity中,其中Accent颜色最显眼,因为它默认是浮动按钮的颜色。如果您想要做的是根据用户偏好研究更改应用程序的颜色/主题“共享偏好以及如何根据用户的选择使用不同的颜色构成主题”。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-29
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多