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

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

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

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

26.01.2016, 10:33. Просмотров 235. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как при смене темы менять стили кнопок? (Программирование Android):

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

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

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

Ошибка при при смене активити - Программирование Android
Была проблема с проигрыванием музыки при сворачивании приложения, я решил ее методом ниже @Override protected void onStop() ...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
27.01.2016, 13:26 #2
Slon747, к чему вы применяете тему? Для активностей и других объектов можно использовать метод setTheme.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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"
Вот как-то примерно так.
1
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 426
27.01.2016, 13:50  [ТС] #4
Spelcrawler, Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 13:50
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.01.2016, 13:50
Ответ Создать тему
Опции темы

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