如何在一个主题中设置多个背景

时间:2016-09-27 10:20:18

标签: android

我完全陷入困境(

UPD。是否可以通过应用单个主题为不同的视图设置不同的背景(或其他属性)?

如何针对不同主题的不同视图应用不同的样式? 简而言之,我想改变主题,取决于一天中的时间,相应地更改视图的属性(颜色,背景等)。

Profi,任何提示都会有很大的吸引力。

2 个答案:

答案 0 :(得分:0)

你应该像以下那样切换语句:

        int theme;
        String color;

     switch (theme) {
                case 1:  color = redandblue;
    //code
                         break;
                case 2:  color = greenanddark;
    //code
                         break;
                case 3:  color = redandwhite;
    //code
                         break;

                default: color = standard;
    //default mean that this will be call when any upper not call 
                         break;

代码表示具有视图颜色的首选项

你也可以用if else

来做到这一点
if(theme == 1){
//code
}else if(theme == 2){
//code
}else if(theme == 3){
//code}
...

,最后一个是使用方法配置主题

private void configureFirstTheme(){
//code
}

private void configureSecondTheme(){
//code
}

你可以在

之类的方法中添加构造函数
private void themeSetup(int theme){
//here the switch statement
}

希望你会选择一些东西

答案 1 :(得分:0)

最后,我找到了一个追求自己的解决方案!我怀疑这些硬编码方法不是非常灵活的解决方案,需要多路复用代码取决于实现的主题数量。 对于那些面临同样任务的人来说,请查看link

  

声明要用作样式引用的属性:

<declare-styleable name="CustomThemeViews">
<attr name="myViewStyle" format="reference"/>
</declare-styleable>     Define styles for each theme:

<style name="myViewStyleTheme01">
<item name="android:background">#f00</item>
</style>

<style name="myViewStyleTheme02">
<item name="android:background">#0f0</item>
</style>     Define themes that refer to different styles:

<style name="AppTheme" parent="android:Theme.Light">
<item name="myViewStyle">@style/myViewStyleTheme01</item>
</style>

<style name="AppThemeAlternative" parent="android:Theme.Light">
<item name="myViewStyle">@style/myViewStyleTheme02</item>
</style>     Use themed styles in layout

<ListView style="?attr/myViewStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"    
...     Now the style applied to the ListView changes according to the theme applied.