我可以在运行时更改我的Android应用程序样式吗?

时间:2017-07-05 09:31:32

标签: java android xml

我想在用户选择首选项文件或设置中的设置时更改清单样式。我在apk中有一个设置,其中包含一个包含三个条目{ "plugins": [ ["babel-relay-plugin-loader"] ], "presets": [ "es2015", "stage-0", "react" ] } 的首选项列表。我想在用户点击样式时更改样式颜色,例如{Style_1, Style_2, Style_3}。我怎么能这样做?

4 个答案:

答案 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);
}

希望它有所帮助!!