Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式重新定义android资源颜色_Android_Colors_Resources - Fatal编程技术网

以编程方式重新定义android资源颜色

以编程方式重新定义android资源颜色,android,colors,resources,Android,Colors,Resources,我已经定义了我想在我的应用程序中作为资源使用的各种颜色 例如 #FFFFFF #7A7A #0044AA 然后我在整个应用程序中使用它们 但是。。。我需要这样做,以便用户可以改变这些颜色的飞行。所以问题是,有没有办法通过编程改变这些颜色?例如,用户选择新的背景色,我的代码重新定义 <color name="background">#0044AA</color> #0044AA 就像这种新颜色一样。在应用程序的所有未来使用中,背景色现在是用户选择的新颜色 谢谢您的帮

我已经定义了我想在我的应用程序中作为资源使用的各种颜色 例如


#FFFFFF
#7A7A
#0044AA
然后我在整个应用程序中使用它们

但是。。。我需要这样做,以便用户可以改变这些颜色的飞行。所以问题是,有没有办法通过编程改变这些颜色?例如,用户选择新的背景色,我的代码重新定义

<color name="background">#0044AA</color>
#0044AA
就像这种新颜色一样。在应用程序的所有未来使用中,背景色现在是用户选择的新颜色


谢谢您的帮助。

据我所知,资源是在apk编译时静态加载的,不能更改。请考虑为它创建一个单独的类,它将保存背景颜色信息。
public static class BackgroundColorHolder{
private int backgroundColor;

public BackgroundColorHolder(Context context){
    /*  Obtain the basic color from resources  */
    backgroundColor = context.getResources().getColor(R.color.background);
}

public int getCurrentBackgroundColor(){
    return backgroundColor;
}

public void changeBackgroundColor(int newColor){
    backgroundColor = newColor;
    /*  Some kind of notification for all of the affected views  */
}

}

Kelevandos的答案是一个很大的帮助,但因为它没有给出一个明确的肯定或否定,而且这个建议还有很多工作要做,所以我想我应该投票给他,但我自己再加上一些,而不是接受它作为答案

答案是。。不可以。无法重新定义资源


最后,我创建了一个类,该类将用户的颜色保存在共享首选项中,然后为每个不同的视图类型提供了更改颜色/重画可绘制内容等方法。然后,我在每个活动中都有一个设置颜色的函数,它将该活动的视图提供给改变它们的方法。

不,这是不可能的。这看起来是个好主意,尽管比我希望的要复杂一点!谢谢
public static class BackgroundColorHolder{
private int backgroundColor;

public BackgroundColorHolder(Context context){
    /*  Obtain the basic color from resources  */
    backgroundColor = context.getResources().getColor(R.color.background);
}

public int getCurrentBackgroundColor(){
    return backgroundColor;
}

public void changeBackgroundColor(int newColor){
    backgroundColor = newColor;
    /*  Some kind of notification for all of the affected views  */
}