2014-12-18 3 views
0

Я определил различные цвета, которые я хочу использовать в своем приложении, в качестве ресурсов например.Программно переопределить цвета ресурса Android

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="hedder_color">#FFFFFF</color> 
    <color name="text_color">#7A7A7A</color> 
    <color name="background">#0044AA</color> 
</resources> 

, а затем я использую их во всем приложении.

Но ... Мне нужно сделать так, чтобы пользователь мог менять эти цвета на лету. Итак, вопрос в том, есть ли способ программно изменить эти цвета? Так, например, пользователь выбирает новый цвет фона, а мой код переопределяет

<color name="background">#0044AA</color> 

как новый цвет. Во всех будущих применениях приложения цвет фона теперь является новым цветом, выбранным пользователем.

Спасибо за помощь.

+0

Нет, это невозможно. – ozbek

ответ

1

Все, что я знаю, ресурсы загружаются статически на компиляцию 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 */ 
} 

}

+0

Это выглядит неплохо, хотя и немного сложнее, чем я надеялся! Благодарю. – 365SplendidSuns

0

Ответ Kelevandos была большая помощь, но, как это не давало окончательную да или нет и предложения еще осталось много работы, чтобы сделать так, я думал, что я до голосования но я добавляю больше, а не принимаю его как ответ.

Ответ: Нет. Ресурсы не могут быть переопределены.

В конце я создал класс, который сохранил цвета пользователей в общих предпочтениях, а затем имел методы изменения цветов/перерисовки чертежей и т. Д. Для каждого типа просмотра. Затем у меня была функция Colors в каждой операции, которая подавала представление этой активности методам, которые могли бы их изменить.

Смежные вопросы