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

Разные стили для разных тем

22.01.2016, 16:59. Просмотров 399. Ответов 2
Метки нет (Все метки)

У кнопок прописан стиль:

main.xml:
XML
1
2
3
4
    <ImageButton
        android:id="@+id/btnSettings"
        android:src="@drawable/settings"
        style="@style/MainButtonStyle"/>
style.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
<!-- Тёмная тема -->
    <style name="HabraTheme" parent="@android:style/Theme.Black">
        <item name="android:windowBackground">@android:color/background_dark</item>
        <item name="android:textColor">#F0E68C</item>
    </style>
 
 
<!-- Стиль кнопок (для светлой темы) -->
    <style name="MainButtonStyle">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">64dp</item>
        <item name="android:gravity">center</item>
        <item name="android:background">@drawable/button_selector</item>
        <item name="android:onClick">btnClick</item>
    </style>
 
 
<!-- Стиль кнопок (для тёмной темы) -->
    <style name="MainButtonStyleBlack">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">64dp</item>
        <item name="android:gravity">center</item>
        <item name="android:background">@drawable/button_selector_black</item>
        <item name="android:onClick">btnClick</item>
    </style>

Как сделать так, чтобы при установке тёмной темы (описана как HabraTheme), стиль кнопок поменялся на MainButtonStyleBlack?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 16:59
Ответы с готовыми решениями:

Стили в AndroidStudio для разных API
Всем добрый день! Тема уже избитая, перечитал кучу всего, но все-таки не могу разобраться...

Указать цвет текста, подходящий для разных цветовых тем
Есть напр. 2 темы: Theme.AppCompat - темная Theme.AppCompat.Light - светлая Вот как указать...

Разные картинки для разных плотностей
Если я сделаю разные разрешения для xhdpi и hdpi и скопирую в эти папки нужные картинки, а для...

CustomView разные изображения для разных экранов - одна система координат - Как?
Есть изображение, карта, на ней я должен в координатах размещать объекты. Изображения разные:...

Разные стили DialogFragment
Есть несколько AppCompatDialogFragment. Когда я запускаю приложение на телефоне с android 6.0.0, то...

2
androbro
354 / 311 / 71
Регистрация: 17.10.2014
Сообщений: 913
22.01.2016, 20:55 2
Цитата Сообщение от Slon747 Посмотреть сообщение
Как сделать так, чтобы при установке тёмной темы (описана как HabraTheme), стиль кнопок поменялся на MainButtonStyleBlack?
так по идее добавить android:imageButtonStyle
XML
1
2
3
4
5
    <style name="HabraTheme" parent="@android:style/Theme.Black">
        <item name="android:windowBackground">@android:color/background_dark</item>
        <item name="android:textColor">#F0E68C</item>
        <item name="android:imageButtonStyle">@style/MainButtonStyleBlack</item>
    </style>
все же вроде как очень логично, не?)
1
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
23.01.2016, 17:58  [ТС] 3
Вроде логично.
Но я так понимаю, что кроме этого нужно в main.xml убрать строку
XML
1
style="@style/MainButtonStyle"
Но тогда я получаю:
java.lang.RuntimeException: Binary XML file line #251: You must supply a layout_width attribute.

Что теперь не так?

main.xml:
XML
1
2
3
                    <ImageButton
                            android:id="@+id/btnSettings"
                            android:src="@drawable/settings"/>

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    <!-- Светлая тема -->
    <style name="AppThemeLight" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
        <item name="android:textColor">#000000</item>
        <item name="android:windowBackground">@android:color/background_light</item>
        <item name="android:imageButtonStyle">@style/MainButtonStyleLight</item>
    </style>
 
    <!-- Тёмная тема -->
    <style name="AppThemeDark" parent="@android:style/Theme.Black">
        <item name="android:textColor">#F0E68C</item>
        <item name="android:windowBackground">@android:color/background_dark</item>
        <item name="android:imageButtonStyle">@style/MainButtonStyleBlack</item>
    </style>
 
 
    <!-- Application theme. -->
    <style name="AppTheme" parent="AppThemeDark">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
 
    <!-- Стиль кнопок для светлой темы -->
    <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>
P.S. Я для удобства переименовал стили

Добавлено через 6 минут
А вот так получилось:
Если прописал
XML
1
2
3
4
5
                    <ImageButton
                            android:id="@+id/btnSettings"
                            android:layout_width="fill_parent"
                            android:layout_height="64dp"
                            android:src="@drawable/settings"/>
Т.е. теперь нужно у всех кнопок прописывать высоту/ширину?
Нельзя в стили загнать?

Добавлено через 7 часов 28 минут
И всё таки мне не понятно, как подставлять свои стили в темы.
Т.е. в приложении используются 2 вида кнопок. Это разные кнопки как по цвету, так и по другим свойствам.
Свойства этих 2-в видов кнопок описаны в 2-х стилях.
И я не могу в теме прописать типа этого:
XML
1
2
3
    <style name="AppThemeDark" parent="@android:style/Theme.Black">
        <item name="android:imageButtonStyle">@style/MainButtonStyleBlack</item>
    </style>
, т.к. это повлечет за собой изменение всех кнопок, а не только одного из типов кнопок.
Как быть?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2016, 17:58

Можно ли подписывать одним и тем же ключом разные сборки?
Можно ли подписывать одним и тем же ключом разные сборки(например pro, lite и т.д.)? Google Play...

Разные каскадные стили для разных браузеров
Как с помощью js определить браузер посетителя и подключить индивидуальную таблицу стилей ? ...

Компонент Memo: установить разные стили для разных строк
Всем доброго времени суток. Есть компонент Memo, в нем есть текст, можно ли для 1-ой строки...


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

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

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