我完全陷入困境(
UPD。是否可以通过应用单个主题为不同的视图设置不同的背景(或其他属性)?
如何针对不同主题的不同视图应用不同的样式? 简而言之,我想改变主题,取决于一天中的时间,相应地更改视图的属性(颜色,背景等)。
Profi,任何提示都会有很大的吸引力。
答案 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.