Скажем, по моему вызову API у меня есть параметр, который называется color. Можно ли отредактировать или изменить существующий R.colors.color, чтобы назначить цвет из результата API?
В качестве примера:
Я вызываю свой API и возвращает green, теперь я хочу загрузить мое приложение с i.e(зеленый цвет Toolbar, зеленый цвет TextView и т.д.), возможно ли это?
Моя первая мысль была:
Создайте элемент colors.xml под названием demo, затем назначьте его по умолчанию, затем используйте цвет demo, где бы я ни захотел (Button, TextView и т.д.). Тогда я подумал, что это возможно чтобы программно изменить это значение с помощью API, поэтому мне не нужно было бы создавать SharedPreferences или что-то в этом роде и избегать большего количества кода.
Как @Y.S. сказал мне
К сожалению, вам нужно установить цвет текста или просмотреть вручную всюду...:(
Я хотел бы, если есть другой способ сделать это, так как я не знаю, сколько будет Activities моего проекта, поэтому, если есть другой способ сделать это, я рад услышать другие догадки.
ИЗМЕНИТЬ
Я пытаюсь ответить @Jared Rummler и, возможно, я что-то делаю неправильно... Я создал простой Json, и я надел свои Активы, я разбираю Json, и я положил его на GlobalConstant, тогда я сделал "простое приложение".
Прежде всего, у меня есть TextView и a Button, который содержит "your_special_color", и его возвращение я помещаю GlobalConstant int следующим образом:
case "your_special_color":
return GlobalConstant.color;
Тогда то, что я пробовал, это мой первый Activity имеет 1 TextView и 1 Button, как я сказал ранее, и у них есть цвет "your_special_color", который я не хочу менять, но у меня есть Intent на моем Button, чтобы открыть другой Activity, который содержит то же самое, но с GlobalConstant.color и он не изменяется.
Я попробовал это сделать (мое второе действие):
public class Main2Activity extends AppCompatActivity {
private Res res;
@Override public Resources getResources() {
if (res == null) {
res = new Res(super.getResources());
}
return res;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
Я что-то пропустил?
Ой.. Я понял это, я думаю, делает это на моем MainActivity2?
Button btn = (Button)findViewById(R.id.button2);
btn.setBackgroundColor(res.getColor(R.color.your_special_color));