Краткий ответ: попробуйте перейти к исходному коду о том, как Theme.MaterialComponents.Light.NoActionBar
определяет стиль для кнопок, и переопределите эти атрибуты.
Стиль Android работает путем объединения всех определенныхатрибуты в теме.Например, у вас есть AppTheme
, который включает темы для каждого встроенного представления.Если вы создаете новую тему для своей кнопки и определяете только пару атрибутов, то, что делает android studio, это объединяет все атрибуты, определенные в AppTheme
, с вашими новыми атрибутами.Поэтому, если вы хотите переопределить кнопки, вам нужно углубиться и выяснить, какие именно атрибуты определены в общих AppTheme
, установленных вами в приложении, они могут не совпадать.
Например,Вот как я изменил цвет всех кнопок в моем приложении, поскольку они использовали для него глобальный атрибут: В общем файле styles.xml я поставил:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorButtonNormal">?myCustomColor</item>
...
</style>
Но если бы я хотелизмените атрибут backgroundTint
моих кнопок, я должен был сделать это:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorButtonNormal">?myCustomColor</item>
<item name="android:buttonStyle">@style/AppButtonStyle</item>
...
</style>
<style name="AppButtonStyle" parent="Widget.AppCompat.Button">
<item name="android:backgroundTint">?attr/colorAccent</item>
</style>
Кроме того, зацените этот классный пост Medium , чтобы узнать о других возможностях для разработчиков в этой теме.