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

Как при смене темы менять стили кнопок? - Android

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 414
26.01.2016, 10:33     Как при смене темы менять стили кнопок? #1
В приложении используются 2 вида кнопок. Это разные кнопки как по цвету, так и по другим свойствам.
Свойства этих 2-х видов кнопок описаны в 2-х разных стилях.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <!-- Стиль больших кнопок для светлой темы -->
    <style name="MainButtonStyleLight">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">64dp</item>
        <item name="android:onClick">btnClick</item>
        <item name="android:background">@drawable/button_selector</item>
    </style>
 
    <!-- Стиль больших кнопок для тёмной темы -->
    <style name="MainButtonStyleBlack">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">64dp</item>
        <item name="android:onClick">btnClick</item>
        <item name="android:background">@drawable/button_selector_black</item>
    </style>
То-же самое прописано для других видов кнопок.
Как мне сделать так, чтобы при смене темы подтягивались соответствующие стили кнопок?
Если я пропишу так:
XML
1
2
3
    <style name="AppThemeDark" parent="@android:style/Theme.Black">
        <item name="android:imageButtonStyle">@style/MainButtonStyleBlack</item>
    </style>
, то данный стиль кнопок повлияет на оба типа кнопок, а мне этого не нужно.
Как быть?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2016, 10:33     Как при смене темы менять стили кнопок?
Посмотрите здесь:

Android Как менять картинки на кнопке при нажатии?
Android Как менять иконку при startforeground?
Android Пропажа данных при смене ориентации
Android Обнуляется массив при смене ориентации устройства
Выбрасывает из приложения при смене ориентации экрана Android
Android Перезагрузка списка при смене ориентации приложения
Потеря потока при смене ориентации Android
Ошибка при при смене активити Android
Android Задний фон при смене ориентации экрана
Не отображать SplashScreen при смене ориентации экрана Android
Что за магия при смене языка? Android
Ошибка при смене toolbar Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
27.01.2016, 13:26     Как при смене темы менять стили кнопок? #2
Slon747, к чему вы применяете тему? Для активностей и других объектов можно использовать метод setTheme.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
27.01.2016, 13:34     Как при смене темы менять стили кнопок? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Slon747, нужно на каждый стиль создать атрибут в attrs.xml
XML
1
2
3
<declare-styleable name="CustomImageButton">
    <attr name="MainButtonStyle" format="reference"/>
</declare-styleable>
Потом в каждой теме задать значение этому атрибуту:
XML
1
2
3
4
//В светлой теме
<item name="MainButtonStyle">@style/MainButtonStyleLight</item>
//В темной теме
<item name="MainButtonStyle">@style/MainButtonStyleBlack</item>
И потом задавать кнопкам не стиль напрямую, а атрибут
XML
1
android:style="?attr/MainButtonStyle"
Вот как-то примерно так.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 414
27.01.2016, 13:50  [ТС]     Как при смене темы менять стили кнопок? #4
Spelcrawler, Большое спасибо!
Yandex
Объявления
27.01.2016, 13:50     Как при смене темы менять стили кнопок?
Ответ Создать тему
Опции темы

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