2016-07-08 3 views
-2

Я хочу разрешить пользователю устанавливать первичный и вторичный цвет в приложении. Каков наилучший способ сделать это. Из того, что я прочитал, я могу определить различные темы и переключаться между ними, какandroid app switch между цветовыми схемами

setTheme(myTheme.xml); 

Я предпочел бы не делать это в начале любой деятельности. Есть ли способ каким-то образом сделать это в самом xml или в том, что было бы лучшим методом?

В идеале я ищу «глобального» подхода, то, что будет работать, как сделать MyCurrentTheme в XML указывает на переменную, которая переключается между theme1, theme_2, .... на основе настроек пользователя

<activity android:theme="@style/MyCurrentTheme"> 
+0

Что вы имеете в виду под "первичным и вторичным цветом". Тема имеет набор цветов и стилей, в то время как первичные и вторичные цвета используются для настройки представлений Android. Первичные и вторичные цвета являются только поднабором темы – Nekromancer

+0

Возможный дубликат [Как изменить текущую тему во время выполнения в Android] (http://stackoverflow.com/questions/2482848/how-to-change-current-theme-at-runtime -in-android) –

+0

В решениях используется setTheme. Я хотел бы избежать этого и как-то просто использовать xmls – chrise

ответ

0

Вы можете создавать разные темы с требуемыми цветовыми схемами. Затем вы можете применить их через манифест, указав тему в теге активности.

<activity android:theme="@style/CustomTheme"> 
+0

, то, что я искал, было бы способом сделать CustomTheme здесь каким-то переменным, так что мне нужно только управлять этой переменной isntead каждого вида/активности. – chrise

+0

Для изменения всех элементов темы, определение отдельных тем было бы более подходящим. Если вы хотите изменить только цвета в некоторых элементах, вы можете сделать их индивидуально. Чего вы пытаетесь достичь на самом деле? –

+0

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

0

Вы можете создать несколько тем для одного приложения, как показано ниже.

Tutorial here

Примечание: вы должны вызвать setTheme() перед setContentView() методами.

enter image description here enter image description here

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