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

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

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
#1

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

26.01.2016, 10:33. Просмотров 225. Ответов 3
Метки нет (Все метки)

В приложении используются 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     Как при смене темы менять стили кнопок?
Посмотрите здесь:

Программно менять положение кнопок в GridLayout - Программирование Android
Всем привет! Пишу пятнашки) В GridLayout имеется 15 кнопок, примерно таких: &lt;Button android:id=&quot;@+id/b3&quot; ...

Как менять иконку при startforeground? - Программирование Android
Написал сервис, который постоянно в цикле шлет уведомления в виде новой иконки. Но при нехватке памяти система грохает такой процесс, что...

Как менять картинки на кнопке при нажатии? - Программирование Android
как менять картинке на кнопке? (когда нажата одна картинка а когда отпущена другая)

Ошибка при смене Context - Программирование Android
Доброго времени суток! Делаю простую рисовалку. При попытке смены контекста MainActivity с базового на свой (с рисованием) перестают...

Ошибка при смене toolbar - Программирование Android
Имеется тулбар &lt;android.support.v7.widget.Toolbar xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

FATAL EXCEPTION при смене фрагмента - Программирование Android
При смене фрагмента ИНОГДА вываливается ошибка 01-20 14:44:55.539 19482-119482 E/AndroidRuntime: FATAL EXCEPTION: main ...

Потеря потока при смене ориентации - Программирование Android
Здравствуйте! У меня приложения связывается по Bluetooth с другими устройствами. Всё работает хорошо. НО! Если перевернуть устройство и...

Что за магия при смене языка? - Программирование Android
Ничего не могу понять, на английской локализации этот активити выглядит нормально, на русской все растянуто на весь экран... при смене...

Пропажа данных при смене ориентации - Программирование Android
При поворачивании телефона все данные обнуляются и вообще такое такое чувство, что приложение только что открылось как это предотвратить

Выбрасывает из приложения при смене ориентации экрана - Программирование Android
Здравствуйте. Следующая проблема. Создал папку layout-land в папке res. И при добавлении туда вот этого файла xml: &lt;LinearLayout...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
27.01.2016, 13:26     Как при смене темы менять стили кнопок? #2
Slon747, к чему вы применяете тему? Для активностей и других объектов можно использовать метод setTheme.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 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
Сообщений: 422
27.01.2016, 13:50  [ТС]     Как при смене темы менять стили кнопок? #4
Spelcrawler, Большое спасибо!
Yandex
Объявления
27.01.2016, 13:50     Как при смене темы менять стили кнопок?
Ответ Создать тему
Опции темы

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