Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 496
#1

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

26.01.2016, 10:33. Просмотров 832. Ответов 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>
, то данный стиль кнопок повлияет на оба типа кнопок, а мне этого не нужно.
Как быть?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2016, 10:33
Ответы с готовыми решениями:

Программно менять положение кнопок в GridLayout
Всем привет! Пишу пятнашки) В GridLayout имеется 15 кнопок, примерно таких:...

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

Как менять картинки на кнопке при нажатии?
как менять картинке на кнопке? (когда нажата одна картинка а когда отпущена...

Ошибка при при смене активити
Была проблема с проигрыванием музыки при сворачивании приложения, я решил ее...

Ошибка при смене Context
Доброго времени суток! Делаю простую рисовалку. При попытке смены контекста...

3
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
27.01.2016, 13:26 #2
Slon747, к чему вы применяете тему? Для активностей и других объектов можно использовать метод setTheme.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
27.01.2016, 13:34 #3
Лучший ответ Сообщение было отмечено Slon747 как решение

Решение

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"
Вот как-то примерно так.
1
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 496
27.01.2016, 13:50  [ТС] #4
Spelcrawler, Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 13:50

Ошибка при смене toolbar
Имеется тулбар &lt;android.support.v7.widget.Toolbar...

Потеря потока при смене ориентации
Здравствуйте! У меня приложения связывается по Bluetooth с другими...

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


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

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

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