Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
AlexV1
-2 / 0 / 0
Регистрация: 05.04.2016
Сообщений: 33
#1

Определить более одной themes для окраски приложения. Как это сделать правильно? - Программирование Android

12.06.2016, 11:51. Просмотров 114. Ответов 0
Метки нет (Все метки)

Добрый день!

Пытаюсь сделать собственные темы для приложения, но чувствую что делаю что-то или все неправильно.
Не хочу использовать какие то стандартные темы, а разработать свой набор тем.
Пользователь будет в настройках выбирать тему и все Activity ПО будут перекрашены в заданный набор цветов.

Для начала решил сделать 2 темы:

MyTheme.Pink
MyTheme.Black

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

Для этого в res/values/colors.xml (или же это надо делать в res/values/strings.xml?, поправьте, если я не прав) задаю все необходимые цвета для каждой из тем:

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Цвета для темы MyTheme.Pink -->
    <color name="window_bg_color.pink">#FF8888</color>
    <color name="windows_font_color.pink">#aa6666</color>
    <color name="toolbar_color.pink">#aa7777</color>
 
    <!-- Цвета для темы MyTheme.Black -->
    <color name="window_bg_color.black">#888888</color>
    <color name="windows_font_color.black">#000000</color>
    <color name="toolbar_color.black">#333333</color>
</resources>
хотя здесь вероятно надо как то описать ссылки на res/drawable для фона.

Далее накидал res/themes.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
<style name="MyTheme.Pink" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:actionOverflowButtonStyle">@style/MyOverflowIcon</item>
 
    <item name="android:background">@color/window_bg_color.pink</item>
    <item name="android:windowBackground">@color/window_bg_color.pink</item>
    <item name="android:colorBackground">@color/window_bg_color.pink</item>
    <item name="android:textColor">@color/windows_font_color.pink</item>
    <item name="toolbar_color">@color/toolbar_color.pink</item>
 
</style>
 
<style name="MyTheme.Black" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:actionOverflowButtonStyle">@style/MyOverflowIcon</item>
 
    <item name="android:background">@color/window_bg_color.black</item>
    <item name="android:windowBackground">@color/window_bg_color.black</item>
    <item name="android:colorBackground">@color/window_bg_color.black</item>
    <item name="android:textColor">@color/windows_font_color.black</item>
    <item name="toolbar_color">@color/toolbar_color.black</item>
</style>
 
</resources>
В манифесте у <application> задаю android:theme="@style/MyTheme.Black"> чтобы тема распространялась на все приложение.

Для Toolbar пришлось создать 2 отдельных лайаута (для каждой темы по лайауту, а как иначе?):

toolbar_theme_black
toolbar_theme_pink

В activity_main.xml подключаю разметку toolbar'а.

XML
1
2
3
4
<include
   android:id="@+id/tool_bar"
   layout="@layout/toolbar_theme_pink">
</include>
Но вот вопрос, toolbar_theme_pink или toolbar_theme_black подключать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2016, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить более одной themes для окраски приложения. Как это сделать правильно? (Программирование Android):

Как правильно сделать паузу в ходе работы приложения? - Программирование Android
Здравствуйте, Всем. Необходимо просто в ходе выполнения программы сделать паузу в 1 секунда. Погуглил, почитал, что то совсем...

Как сделать так, чтобы в Status bar все уведомления от определённого приложения появлялись под одной иконкой? - Программирование Android
Здравствуйте, Делаю приложение для android 4. Сервис периодически генерит уведомления в Status bar. Все работает. Сейчас у меня это...

Как это сделать? Как объединить более одной таблицы в одном запросе? - SQL Server
Как это сделать? Как объединить более одной таблицы в одном запросе? Есть три таблицы: Табл1 поле1 поле2 поле3 ... ...

Проектирование (разработка логики приложения): как это делать правильно? - C++
Добрейшего времени суток. Зачастую при решении разных задач возникают проблемы с архитектурой приложений. А именно при получении...

return из функции более одного элемента как это сделать - C++
struct { string train_string; int locomotiv; }train; if(index &lt; n) { return train.train_string;

Как правильно все это сделать? - C#
Как мне сделать чтоб когда я нажимаю на кредитную карту мне разблокировались 2 нижних поля Тип карты и Номер карты? Как сделать чтоб...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2016, 11:51
Привет! Вот еще темы с ответами:

Как сделать ограничение на перемещение? Или я не знаю как называется это правильно. (См. внутри) - Delphi
Если нажимать на кнопки ВПРАВО ВЛЕВО ВВЕРХ ВНИЗ робот Петька перемещается соответственно этим кнопкам. А как сделать так, чтобы Петька не...

Как лучше это сделать?. а главное, как правильно? (Информационная система «Железнодорожный вокзал») - C++
Ситуация следующая... Есть задание курсовой работы: 11. Информационная система «Железнодорожный вокзал». Информация: рейсы — номер...

Необходимо сложить блок-схему. Как правильно это сделать? - Алгоритмы
Нарисовать блок - схему для решения задачи поиска и вывода каждого значения переменной y=2x2+3 если x=1,6 (логическое не). Нигде не могу...

Как это сделать правильно. повесить два события на Button1 - Delphi
Добрый вечер! Мне нужно что бы при нажатие кнопки Caption менялся на 'Соединиться' а при втором нажатии сменить Caption на 'Отключится' ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru