2015-06-01 5 views
3

У меня есть приложение, которое использует android.support.v7.widget.Toolbar. Каждый раздел приложения является Fragment, доступ к которому осуществляется через support.v4.widget.DrawerLayoutИзменение цвета панели инструментов Android

Мне нужно изменить цвет Toolbar в зависимости от того, какой раздел показан (для конкретных клиентов).

Я определил некоторые цвета в colors.xml, так что я могу сделать что-то вроде:

changeToolbarColor(R.color.section_one); 

/**/ 

private void changeToolbarColor(int color_res_id){ 
    Integer colorTo = getResources().getColor(color_res_id); 
    toolbar.setBackgroundColor(colorTo); 
} 

Проблемы заключается в том, когда я делаю это, каждый вид с помощью primaryColor (исходного основного цвета на панели инструментов) теперь показывает используя новый цвет панели инструментов.

Так что, если моя панель была зеленый и изменить его на красный, теперь все используя старый зеленый использует красный вместо этого.

Я подозреваю, что изменение фона на панели инструментов меняет само определение primaryColor (что не имеет для меня никакого смысла). Потому что у меня нет другого представления о том, как несвязанные элементы в несвязанных действиях начинают использовать один и тот же цвет.

Это ошибка? Кто-нибудь с этой проблемой? Доступны ли какие-либо обходные пути?

Благодарим за помощь.

+0

Я думаю (но не уверен), что вы должны создавать разные темы и воссоздавать панель инструментов в зависимости от выбора, но, вероятно, это не лучшее поведение. – basteez

+0

Я думал об этом @tizionario, и я согласен с вами. Это не лучший подход. Похоже, что цвет панели инструментов должен быть легко изменен. Но, видимо, это не так, возможно, используя «Палитра» или любой другой подход? Но я не могу придумать, как это сделать прямо сейчас. –

ответ

1

Прежде всего темы неизменяемы, поэтому изменить основной цвет приложения невозможно.

И попробуйте использовать getSupportActionBar().setBackgroundDrawable().

Я думаю, что это что-то еще, что вызывает проблему. Можете ли вы разместить больше кода?

+0

Thx @Aky для ответа, но это не «тема», которую я пытаюсь изменить, а цвет 'Toolbar', который определяется значением, помещенным в' primaryColor' (в 'themes.xml') I Если основной цвет красного цвета, я хочу, чтобы он оставался красным, поэтому все остальные элементы остаются красными. Но панель инструментов, я могу захотеть, чтобы она была зеленой, синей или любой, что мне нужно. Но как только я меняю цвет панели инструментов, все остальные элементы, использующие цвет «primaryColor», также меняются. –

+0

@EloiNavarro Ohhkay, но вы попробовали 'getSupportActionBar(). SetBackgroundDrawable()'? –

+0

Должен признаться, я не был уверен, что это покажет какую-либо разницу. Но действительно, это решило мою проблему. Большое спасибо! –

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