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

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

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

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

22.01.2016, 16:59. Просмотров 283. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разные стили для разных тем (Программирование Android):

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

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

Разные картинки для разных плотностей - Программирование Android
Если я сделаю разные разрешения для xhdpi и hdpi и скопирую в эти папки нужные картинки, а для остальных mdpi, xxdpi и т.д. я эти картинки...

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

Разные стили DialogFragment - Программирование Android
Есть несколько AppCompatDialogFragment. Когда я запускаю приложение на телефоне с android 6.0.0, то у всех диалогов стиль Material Design....

Calendar.get(Calendar.WEEK_OF_YEAR) на разных устройствах возвращает разные значения - Программирование Android
Собственно вопрос в названии темы. Данный код возвращает разное значение на разных устройствах. Но в большинстве все таки проверка на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
androbro
326 / 286 / 60
Регистрация: 17.10.2014
Сообщений: 843
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 / 1
Регистрация: 24.08.2013
Сообщений: 426
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
Привет! Вот еще темы с ответами:

Стили для создания чата - Программирование Android
Добрый день все. Я пытаюсь создать чат на андройд для своего сайта. Вся суть передачи и получения данных мне известна, но так как я совсем...

Switch разные картинки для on и off - Программирование Android
Добрый день! подскажите пожалуйста как можно поставить разные картинки для переключателя switch? android:thumb=&quot;@drawable/sw_on&quot; так я...

Разные drawable для маркера Google Maps - Программирование Android
Здравствуйте. Есть код главной активити @Override public void onCreate(Bundle savedInstanceState) { ...

Возможно ли использовать разные аккаунты для публикации и рекламы? - Программирование Android
У меня приложение опубликовано от моего основного аккаунта Google. Хочу вставить рекламу. Но есть проблемка, мой аккаун забанен в AdSense...


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

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

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