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

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

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

Темы. Наследование свойств элементов - Программирование Android

28.01.2016, 12:10. Просмотров 516. Ответов 13
Метки нет (Все метки)

В теме указываем стиль для кнопок:
XML
1
2
3
<style name="AppThemeDark" parent="@android:style/Theme.Black">
        <item name="MyImageButtonStyle">@style/MainButtonStyleBlack</item>
</style>
В этом случае все свойства, которые не были описаны в стиле MainButtonStyleBlack сбрасываются. Хотя свойства по-умолчанию прописаны в "@android:style/Theme.Black" (такие как смена цвета при нажатии и другие).
Можно ли сделать так, чтобы эти свойства наследовались от Theme.Black?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2016, 12:10     Темы. Наследование свойств элементов
Посмотрите здесь:

Байдинг свойств в xml - Программирование Android
Нужно из одного элемента прибайдить высоту из другого, название свойств совпадают android:layout_height я хз как сделать(

Темы вида Android Studio - Программирование Android
Год назад поставил студию (1.1), поигрался с настройками и СЛУЧАЙНО переключил стиль со светлого на темный. Стиль ВОКРУГ кода - кнопочки,...

Выбор темы дипломного проекта - Программирование Android
Учусь на программиста, сказали тему для дипломных работ выбирать самим. Хорошо разбираюсь в C#, SQL, частично Java. Дело в том, что я не...

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

Ошибка при отображении темы - Программирование Android
Здравствуйте! Правильно ли я понимаю , что эта тема &quot;Theme_Base_AppCompat_Dialog_Light_FixedSize&quot; для API14 ++, и как это можно узнать?...

Подключение темы из Support Library - Программирование Android
Здравствуйте! Решил переделать дизайн своего приложение под material. С трудом подключил библиотеку(через project structure). После...

Определение стиля внутри темы - Программирование Android
Здравствуйте. В своей программе использую FlyOutMenu https://github.com/garuma/FlyOutMenu Там FrameLayout (С надписью My App) имеет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 13:49     Темы. Наследование свойств элементов #2
А вам
XML
1
parent="..."
в теге style ни о чем не говорит? Можно каждому стилю там задать родительскую тему и все, не описанные в стиле, параметры будут подставляться из этой темы.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
28.01.2016, 14:15  [ТС]     Темы. Наследование свойств элементов #3
Spelcrawler, я пробовал.
Но проблема, видимо, не в этом.
Как оказалось, и без parent всё нормально получается, пока не применю к стилю для ImageButton свойство background для смены цвета:
XML
1
2
3
<style name="MainButtonStyleBlack" parent="android:Theme.Light">
        <item name="android:background">#000000</item>
</style>
После этого кнопки превращаются в что-то непотребное, пока не пропишу в этом стиле многие свойства.
Так что проблема остается.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 14:17     Темы. Наследование свойств элементов #4
Slon747, а остальные стили не наследуются от этой темы с бекграундом?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
28.01.2016, 14:54  [ТС]     Темы. Наследование свойств элементов #5
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Slon747, а остальные стили не наследуются от этой темы с бекграундом?
Сейчас у меня так.
attr.xml:
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="SmallButtonStyle" format="reference"/>
</resources>
styles.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<style name="AppThemeDark" parent="@android:style/Theme.Black">
    <item name="SmallButtonStyle">@style/SmallButtonStyleDark</item>
</style>
 
<!-- Application theme. -->
<style name="AppTheme" parent="AppThemeDark">
</style>
 
<style name="SmallButtonStyleDark" parent="android:Theme.Black">
    <item name="android:layout_width">48dp</item>
    <item name="android:layout_height">48dp</item>
    <item name="android:scaleType">centerCrop</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:onClick">btnClick</item>
    <item name="android:background">#000000</item>
</style>
main.xml:
XML
1
2
3
4
<ImageButton
    android:id="@+id/btnFilter"
    android:src="@drawable/search"
    style="?attr/SmallButtonStyle"/>
Причем, даже если если прописать background не к в стиле, а в самой кнопке, то она также портится.
И началось это после того, как я сделал связь между темой и стилем через аттрибуты.
До этого background не портил свойства кнопки.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 14:58     Темы. Наследование свойств элементов #6
Slon747, а ну да, если кнопке задать background цветом и будет "что-то непотребное". Нужно через selector делать.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
28.01.2016, 16:54  [ТС]     Темы. Наследование свойств элементов #7
Цитата Сообщение от Spelcrawler Посмотреть сообщение
а ну да, если кнопке задать background цветом и будет "что-то непотребное". Нужно через selector делать.
Сделал через селектор, ничего не изменилось.
XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 
    <item
          android:drawable="@color/pressed_highlight"
          android:state_pressed="true"/>
 
    <item
          android:drawable="@color/small_butoon_color"/>
</selector>
Как только применяю селектор, кнопки портятся.
Может при использовании селектора нужно все свойства прописывать в нем, а не в стиле?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 17:19     Темы. Наследование свойств элементов #8
Цитата Сообщение от Slon747 Посмотреть сообщение
кнопки портятся
Что значит "портятся"?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
28.01.2016, 17:25  [ТС]     Темы. Наследование свойств элементов #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Что значит "портятся"?
Кнопки находятся на панели.
Изображение кнопки растягивается на всю поверхность (возможно, перестает работать centerCrop), пропадает padding (хотя он и не был нигде указан, но видимость его была), кнопки выстраиваются вплотную друг к другу.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 17:26     Темы. Наследование свойств элементов #10
Можно попробовать задать tintColor вместо background. Если приложение не расчитано на андроид ниже 5 версии можно просто:
XML
1
android:backgroundTint="#FFF"
Если нужна поддержка старых версий можно использовать AppCompatButton из библиотеки поддержки, вместо Button и задать ей параметр
XML
1
app:backgroundTint="#FFF"
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
28.01.2016, 17:32  [ТС]     Темы. Наследование свойств элементов #11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Можно попробовать задать tintColor вместо background. Если приложение не расчитано на андроид ниже 5 версии можно просто:
XMLВыделить код
1
android:backgroundTint="#FFF"
Если нужна поддержка старых версий можно использовать AppCompatButton из библиотеки поддержки, вместо Button и задать ей параметр
XMLВыделить код
1
app:backgroundTint="#FFF"
Спасибо. Но нужна поддержка андроида 4.
А с использованием AppCompatButton у меня вышла проблема. Вроде как нужно проект переводить в gradle, иначе не работает.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 17:38     Темы. Наследование свойств элементов #12
Цитата Сообщение от Slon747 Посмотреть сообщение
Вроде как нужно проект переводить в gradle
Советую в любом случае перевести на Gradle. Но библиотеку можно и без него подключить
Pablito
2455 / 1900 / 591
Регистрация: 12.05.2014
Сообщений: 6,702
Завершенные тесты: 1
28.01.2016, 17:53     Темы. Наследование свойств элементов #13
AppCompatButton использовать не нужно, в описании даже сказано
A Button which supports compatible features on older version of the platform, including:
Supports R.attr.textAllCaps style attribute which works back to Eclair MR1.
Allows dynamic tint of it background via the background tint methods in android.support.v4.view.ViewCompat.
Allows setting of the background tint using R.attr.backgroundTint and R.attr.backgroundTintMode.
This will automatically be used when you use Button in your layouts. You should only need to manually use this class when writing custom views.
Тема приложения естественно должна наследоваться от чего-то AppCompat

Затинтовать все кнопки можно примерно так
в теме приложения добавляем строку
XML
1
        <item name="buttonStyle">@style/MyButtonStyle</item>
и создаем стиль для кнопки
XML
1
2
3
    <style name="MyButtonStyle" parent="Widget.AppCompat.Button">
        <item name="backgroundTint">#5F9</item>
    </style>
Или я не въехал в тему?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 20:36     Темы. Наследование свойств элементов
Еще ссылки по теме:

Смена темы ActionBar при нажатии на кнопку - Программирование Android
Подскажите пожалуйста как можно изменить тему ActionBar, при нажатии на кнопку.

Разные темы оформления меню на старых устройствах - Программирование Android
Доброго времени суток всем!) Ребят, столкнулся с такой проблемой, кто может объяснить почему вид меню изменяется при переходе из одной...

Возможность смены темы/стиля приложения в рантайме - Программирование Android
Привет всем! Помогите разобраться. Хочу в рантайме иметь возможность смены стиля приложения. Сделал кучу стилей для элементов. На...

Как при смене темы менять стили кнопок? - Программирование Android
В приложении используются 2 вида кнопок. Это разные кнопки как по цвету, так и по другим свойствам. Свойства этих 2-х видов кнопок...

Новичёк в андроиде (в курсе что такие темы уже есть) - Программирование Android
Знаю что тем существует много (большинство из них перелистал, остались вопросы) хочу научиться создавать приложения под андроид. ...


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

Или воспользуйтесь поиском по форуму:
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
28.01.2016, 20:36     Темы. Наследование свойств элементов #14
Паблито, я только в разметке пробовал - там на обычный Button нельзя назначить tint.
Yandex
Объявления
28.01.2016, 20:36     Темы. Наследование свойств элементов
Ответ Создать тему
Опции темы

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