Как изменить цвет текста кнопки 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.