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

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

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

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

28.01.2016, 12:10. Просмотров 592. Ответов 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?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2016, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Темы. Наследование свойств элементов (Программирование Android):

Наследование свойств - C++
Хотелось бы описать 1 функцию в базовом классе типа: void func(){ procedure( a ); } , где &quot;a&quot; представляет собой что-то типа: struct{...

Наследование свойств компонентов - C++ Builder
возник небольшой вопросик (чистое любопытство) такого плана: допустим возьмём любой компонент формы, напр кнопку - Button1, у неё есть...

Наследование базовых свойств usercontrol - C#
Всем доброго дня суток! Был создан новый usercontrol, наследуемый от minthcalendar. Однако базовые свойства monthcalendar на форме с...

Наследование свойств и методов классов в Delphi - Delphi
Не могу решить проблему с наследованием свойств и методов. Задача: Разработать консольное приложение, содержащее класс TPoint следующей...

Наследование функций и свойств. Немного не пойму - PHP ООП
Вот код: class Point { private $y = 0; public function getY() { return $this-&gt;y; } } class Child...

Наследование Label и расширение его свойств - Visual Basic .NET
Всем здравствуйте. Как создать элемент управления-расширитель свойств и методов стандартного Label (без графической части). К нему нужно...

13
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 13:49 #2
А вам
XML
1
parent="..."
в теге style ни о чем не говорит? Можно каждому стилю там задать родительскую тему и все, не описанные в стиле, параметры будут подставляться из этой темы.
0
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
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>
После этого кнопки превращаются в что-то непотребное, пока не пропишу в этом стиле многие свойства.
Так что проблема остается.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 14:17 #4
Slon747, а остальные стили не наследуются от этой темы с бекграундом?
0
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
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 не портил свойства кнопки.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 14:58 #6
Slon747, а ну да, если кнопке задать background цветом и будет "что-то непотребное". Нужно через selector делать.
1
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
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>
Как только применяю селектор, кнопки портятся.
Может при использовании селектора нужно все свойства прописывать в нем, а не в стиле?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 17:19 #8
Цитата Сообщение от Slon747 Посмотреть сообщение
кнопки портятся
Что значит "портятся"?
0
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
28.01.2016, 17:25  [ТС] #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Что значит "портятся"?
Кнопки находятся на панели.
Изображение кнопки растягивается на всю поверхность (возможно, перестает работать centerCrop), пропадает padding (хотя он и не был нигде указан, но видимость его была), кнопки выстраиваются вплотную друг к другу.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 17:26 #10
Можно попробовать задать tintColor вместо background. Если приложение не расчитано на андроид ниже 5 версии можно просто:
XML
1
android:backgroundTint="#FFF"
Если нужна поддержка старых версий можно использовать AppCompatButton из библиотеки поддержки, вместо Button и задать ей параметр
XML
1
app:backgroundTint="#FFF"
1
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
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, иначе не работает.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 17:38 #12
Цитата Сообщение от Slon747 Посмотреть сообщение
Вроде как нужно проект переводить в gradle
Советую в любом случае перевести на Gradle. Но библиотеку можно и без него подключить
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 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>
Или я не въехал в тему?
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
28.01.2016, 20:36 #14
Паблито, я только в разметке пробовал - там на обычный Button нельзя назначить tint.
0
28.01.2016, 20:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 20:36
Привет! Вот еще темы с ответами:

Наследование tablelayoutpanel и сохранение доступности свойств компонентов, расположенных на ней - C#
Добрый день! Есть Form1 на ней protected textbox1 и protected tablelayout1 Есть Form2 :Form1 (наследуется от Form1) Если...

Задачи на наследование классов, в которых данные описаны в качестве свойств - C#
Создать класс Money для работы с денежными суммами в котором для рублей и копеек предусмотрены независимые целочисленные данные....

Критерии переноса темы в раздел. Личные сообщения при перемещении темы. - 1С
Добрый день. я не могу понять по каким критериям темы сортируются в форуме 1с. вот я создал тему веб сервисы- веб сервисы - они...

Вывод свойств элементов инфоблока в js - 1С Битрикс
Доброго времени суток. Подскажите, пожалуйста, как выводить значения свойств элементов инфоблока в js?


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

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

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