Как изменить цвет текста кнопки Android в глобальном масштабе в теме
Как мне изменить цвет текста всех моих кнопок?
Я знаю, что могу установить цвет фона следующим образом:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="colorButtonNormal">@color/buttonColor</item>
</style>
Как я могу сделать это для кнопки Текст?
Ответы
Ответ 1
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textColor">#yourcolor</item>
<item name="android:buttonStyle">@style/ButtonColor</item>
<item name="colorButtonNormal">@color/buttonColor</item>
</style>
<style name="ButtonColor" parent="@android:style/Widget.Button">
<item name="android:textColor">@color/yourcolor</item>
</style>
android: textColor. Это должно помочь вам изменить цвет текста во всем мире. Надеюсь, это полезно. Спасибо.
Ответ 2
Если вам просто нужно изменить цвет текста кнопок. Вы можете изменить атрибут стиля textAppearanceButton
основной темы.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorButtonNormal">@color/buttonColor</item>
<item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Button.Custom</item>
</style>
И объявите новый стиль textAppearance следующим образом
<style name="TextAppearance.AppCompat.Button.Custom">
<item name="android:textColor">@color/mycustomcolor</item>
</style>
Ответ 3
Для всех, кто наткнулся на это, я рекомендую проверить аналогичный вопрос о стилях кнопок дизайна материалов. С темой ваш цвет "акцент" будет использоваться для цветной кнопки.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Colored</item>
<item name="buttonStyle">@style/Widget.AppCompat.Button.Colored</item>
</style>
Ответ 4
С новой темой Theme.MaterialComponents
вы можете определить атрибут materialButtonStyle
в своей теме приложения.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
....
<item name="materialButtonStyle">@style/MyButtonTheme</item>
</style>
Таким образом, вы можете глобально настроить стиль всех кнопок в вашем приложении. Вы можете переопределить атрибуты темы из стиля по умолчанию, используя атрибут materialThemeOverlay
.
Что-то вроде:
<style name="MyButtonTheme" parent="Widget.MaterialComponents.Button">
<item name="materialThemeOverlay">@style/ButtonStyleTextColor</item>
</style>
<style name="ButtonStyleTextColor">
<!-- For filled buttons, your theme colorPrimary provides the default background color of the component, and -->
<!--the text color is colorOnPrimary -->
<item name="colorPrimary">@color/my_color</item>
<item name="colorOnPrimary">@color/my_color2</item>
</style>
В настоящее время для атрибута materialThemeOverlay
требуется версия 1.1.0 компонентов материала для библиотеки Android.
implementation 'com.google.android.material:material:1.1.0-alpha09'
Ответ 5
Просто используйте AppCompatButton
, установив этот атрибут:
"app:backgroundTint="@color/wildberries"
И убедитесь, что ваша деятельность расширяет AppCompatActivity. Я просто использую это в своем проекте. Это работает как шарм в 5.X и pre-5.X.