android多主题,一个应用
我需要开发一个应用程序,它可以为服务器定义的一些用户设置不同的应用程序颜色。 我已经阅读了很多使用attr.xml文件的自定义主题,但是如果我使用它,android studio builder将被破坏。 因此,我开发了另一种方法-我将我的BaseActivity的Resorses类子类化:android多主题,一个应用,android,android-theme,Android,Android Theme,我需要开发一个应用程序,它可以为服务器定义的一些用户设置不同的应用程序颜色。 我已经阅读了很多使用attr.xml文件的自定义主题,但是如果我使用它,android studio builder将被破坏。 因此,我开发了另一种方法-我将我的BaseActivity的Resorses类子类化: CustomResource customResource; @Override public Resources getResources() { if (customResource ==
CustomResource customResource;
@Override
public Resources getResources() {
if (customResource == null) {
customResource = new CustomResource(super.getAssets(), super.getResources().getDisplayMetrics(), super
.getResources().getConfiguration());
}
return customResource;
}
public class CustomResource extends Resources {
public CustomResource(AssetManager assets, DisplayMetrics metrics, Configuration config) {
super(assets, metrics, config);
}
@Override
public int getColor(int id) throws NotFoundException {
Log.d("TAG", "id: " + id + " getResourceName: " + getResourceName(id));
Log.i("TAG", "Came Color: "+super.getColor(id));
return getColor ( getResourceName(id) , id);
}
public int getColor(String aString, int oldId) {
String packageName = getPackageName();
int resId = getIdentifier(getThemeColorName(aString),null,null);
Log.v("TAG", "resId: "+resId);
if (resId != 0) {
Log.i("TAG", "We SET Color: "+super.getColor(resId));
return super.getColor(resId);
} else {
return super.getColor(oldId);
}
}
private String getThemeColorName(String aString){
int pos = aString.lastIndexOf('/');
if (pos != -1){
aString = aString.substring(0, pos+1) + "b" + aString.substring(pos+1, aString.length());
}
Log.d("TAG", "aString NOW: " + aString);
return aString;
}
}
为了测试而检索适当的资源,我将退出而不是someColor->bsomeColor。
当我查看日志时,一切正常,颜色也在变化
但如果我从xml活动布局设置颜色,我会看到所有方法都成功执行,但在我的屏幕上,android ePlyies颜色没有b前缀,但我的所有方法都被调用-getColor用于每个视图,我返回super.getColor以获得适当的颜色,这是我需要的
请告诉我如何解决这个问题,或者给我其他的选项来很好地引入多个主题,而不破坏xml编辑器您在这里看到这个答案了吗@Sparkybrow我的问题是如何管理自定义颜色,比如firmColor1、ets,而不是android部分。这个问题是关于其他东西的,你是如何定义bsomeColor的?它是一个十六进制数还是一种颜色。来自RGB?@Sparkybrow没什么特别的:e10000 7829ff