web-dev-qa-db-ja.com

テーマでグローバルにボタンの色を変更する方法Android

すべてのボタンのテキストの色を変更するにはどうすればよいですか?

私は次のように背景色を設定できることを知っています:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="colorButtonNormal">@color/buttonColor</item>
</style>

ボタンTextでこれを行うにはどうすればよいですか?

22
Zapnologica
 <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これは、テキストの色をグローバルに変更するのに役立ちます。これがお役に立てば幸いです

31
Jois

ボタンのテキストの色を変更するだけの場合。メインテーマの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>
9
dishan

これに出くわした人には、 Material Design Button Styles。 についての同様の質問をチェックすることをお勧めします。

<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>
9
sschmitz

新しい 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's 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属性には、Androidライブラリのマテリアルコンポーネントのバージョン1.1.0が必要です。

implementation 'com.google.Android.material:material:1.1.0-alpha09'
1

この属性を設定してAppCompatButtonを使用するだけです:

"app:backgroundTint="@color/wildberries"

そして、アクティビティがAppCompatActivityを拡張していることを確認してください。私は自分のプロジェクトでそれを使用しています。 5.Xと5.Xより前の両方で、チャームのように機能します。

1
Hesam Rastegari