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

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

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

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

22.01.2016, 16:59. Просмотров 228. Ответов 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 16:59     Разные стили для разных тем
Посмотрите здесь:

Android Разные drawable для маркера Google Maps
Разные ключи google для debug и signed приложений Android
Стили для создания чата Android
Разная разметка для разных разрешений Android
Android Указать цвет текста, подходящий для разных цветовых тем
Android CustomView разные изображения для разных экранов - одна система координат - Как?
Размеры ресурсов для разных устройств Android
Стили в AndroidStudio для разных API Android
Android Разные стили DialogFragment
Android Calendar.get(Calendar.WEEK_OF_YEAR) на разных устройствах возвращает разные значения
Dimens для разных экранов Android
Android Посоветуйте утилиту для создания картинок под разные экраны Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 827
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>
все же вроде как очень логично, не?)
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 415
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>
, т.к. это повлечет за собой изменение всех кнопок, а не только одного из типов кнопок.
Как быть?
Yandex
Объявления
23.01.2016, 17:58     Разные стили для разных тем
Ответ Создать тему
Опции темы

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