0

Я пытаюсь сделать все кнопки в моем приложении по умолчанию, используя colorButtonNormal в моем стиле.Cant change colorButtonNormal value для всех кнопок

Он хорошо работает на API 21 и выше, но по API 21 он меняет только фон некоторых кнопок, и я не знаю, что происходит не так.

styles.xml

<resources xmlns:tools="http://schemas.android.com/tools"> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="colorPrimary">@color/btn_login</item> 
     <item name="colorPrimaryDark">@color/bg_login</item> 
     <item name="colorAccent">@color/btn_login</item> 
     <item name="colorButtonNormal">@color/btn_login</item> 
    </style> 

</resources> 

v21/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> 
     <item name="android:colorButtonNormal">@color/btn_login</item> 
     <item name="colorPrimary">@color/btn_login</item> 
     <item name="colorPrimaryDark">@color/bg_login</item> 
     <item name="colorAccent">@color/btn_login</item> 
    </style> 



    <style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="android:colorPrimary">@color/btn_login</item> 
     <item name="android:colorAccent">@color/btn_login</item> 
     <item name="colorAccent">@color/btn_login</item> 
     <item name="colorPrimary">@color/btn_login</item> 
     <item name="colorPrimaryDark">@color/bg_login</item> 
    </style> 

    <style name="Preference" parent="Theme.AppCompat.Light"> 
     <item name="android:textColorPrimary">@color/black</item> 
     <item name="android:colorPrimary">@color/btn_login</item> 
     <item name="android:colorAccent">@color/btn_login</item> 
     <item name="android:editTextColor">@color/black</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> 
     <item name="colorAccent">@color/btn_login</item> 
    </style> 



     <style name="EditTextThemeCustom" parent="Theme.AppCompat.Light"> 
      <!-- Customize your theme here. --> 
      <item name="android:editTextColor">@color/black</item> 
      <item name="android:textColor">@color/black</item> 
      <item name="colorAccent">@color/btn_login</item> 
     </style> 


</resources> 

Результат:

Lollipop

и

Kitkat

Любые предложения?

+0

[Ответ] (http://stackoverflow.com/questions/26519979/coloring-buttons-in-android-with-material-design-and-appcompat) –

+0

У меня есть тот же код, что и принятый ответ ... вы можете уточнить? – ElouCapitan

ответ

3

добавить на styles.xml

<style name="ColoredButton" parent="Widget.AppCompat.Button"> 
    <item name="colorButtonNormal">@color/btn_login</item> 
</style> 

, а затем использовать

android:theme="@style/ColoredButton" 

в качестве одной из кнопок атрибутов

+0

Это не работает для меня, однако, если я добавлю другие свойства в ColoredButton, они работают (т. Е. Цвет текста) – user1282637

+1

'Widget.AppCopmat.Button' - это * стиль * не * тема *. Наложение темы, например '