Widget.AppCompat.Button colorButtonNormal показывает серый
У меня values:styles.xml
с:
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
<item name="colorButtonNormal">@color/my_color</item>
<item name="android:textColor">@android:color/white</item>
</style>
и values-v21:styles.xml
с:
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
<item name="android:colorButtonNormal">@color/my_color</item>
<item name="android:textColor">@android:color/white</item>
</style>
И стиль приложения с
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:buttonStyle">@style/AppTheme.Button</item>
</style>
Но цвета выглядят серыми, а не @color/my_color
Ответы
Ответ 1
Для настройки одной кнопки установите только андроид: theme = "@style/AppTheme.Button" на вашу кнопку.
<Button
......
android:theme="@style/AppTheme.Button"
......
/>
Определите свой стиль, как в вашем вопросе
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
........
<item name="colorButtonNormal">@color/my_color</item>
........
</style>
[EDIT]
Смотрите демонстрацию GitHub здесь
Ответ 2
Используйте Widget.AppCompat.Button.Colored
в качестве родителя для вашего стиля.
<style name="RedButton" parent="Widget.AppCompat.Button.Colored">
<item name="android:textColor">@color/white</item>
<item name="colorButtonNormal">@color/red</item>
</style>
Используйте android:theme
, а не style
в определениях кнопок:
<Button android:theme="@style/RedButton"/>
Смотрите AppCompat v21 > Theming и Android Support Library v22.1 - AppCompat в блогах.
(примечание о втором сообщении, android:theme
поддерживается в API11-, оно просто не выполняет автоматическое наследование от родителя, вам придется указывать его на каждом дочернем устройстве, а не на проблему, но стоит упомянуть - см. сообщение Chris Banes об этом).
Ответ 3
Поместите строку xml ниже в свой "AppTheme" xml, вместо того, чтобы пытаться установить ее из "AppTheme.Button". Это работает для меня на v22.1.1 с не-lollipop устройствами. Я предполагаю, что это ошибка, потому что ваше решение выше отлично работает для леденцов.
<item name="colorButtonNormal">@color/my_color</item>
Ответ 4
Использование:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="buttonStyle">@style/AppTheme.Button</item>
</style>
удалите android:
Ответ 5
Убедитесь, что ваш Activity
расширяется AppCompatActivity
, в противном случае он не будет корректно обрабатывать стили appCompat.
- класс:
android.support.v7.app.AppCompatActivity
- Gradle:
compile 'com.android.support:appcompat-v7:23.0.1'
Ответ 6
Это работает:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- android:buttonStyle for v21+ and buttonStyle for the rest -->
<item name="buttonStyle">@style/MyCustomButton</item>
<item name="android:buttonStyle">@style/MyCustomButton</item>
<item name="colorButtonNormal">@color/my_color</item>
</style>
<style name="MyCustomButton" parent="Base.Widget.AppCompat.Button">
<item name="android:textColor">#ffffff</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>
colorButtonNormal
можно установить в стиле темы. Чтобы изменить цвет текста, размер или любую другую функцию кнопки, вы можете создать стиль, а затем с помощью buttonStyle
(меньше, чем v21) или android:buttonStyle
(v21 +) в стиле темы, чтобы установить стиль кнопки.
Ответ 7
v21/styles.xml
<style name="AppTheme.BlueButton" parent="Widget.AppCompat.Button.Colored">
<item name="android:colorButtonNormal">@color/blue</item>
<item name="android:textColor">@color/text_white</item>
</style>
styles.xml
<style name="AppTheme.BlueButton" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/blue_tint</item>
<item name="android:textColor">@color/text_white</item>
</style>
Изначально я тоже сталкиваюсь с этой проблемой. После исправления, как указано выше, я получил правильную кнопку пользовательского интерфейса
Ответ 8
Если вам интересно, почему colorButtonNormal
не выбрано, как определено для отключенных кнопок, вам также может потребоваться установить android:disabledAlpha
в 1.0
в теме, иначе ваш цвет по умолчанию будет смешаться с фоном кнопки. Пример:
<style name="MyButtonTheme" parent="ThemeOverlay.AppCompat.Light">
<item name="android:disabledAlpha">1.0</item>
<item name="colorButtonNormal">@color/my_solid_disabled_color</item>
<item name="colorAccent">@color/my_solid_accent_color</item>
<item name="buttonStyle">@style/my_button_style</item>
</style>
Ответ 9
Привет. Я думаю, что используемый вами дочерний виджет может быть неправильным, он должен android:Widget.Button
для API версии 21 или более ранней версии, для более поздней версии 21 или выше вы должны использовать `android: Widget.Material.Button. Пусть говорят, что стиль по умолчанию должен выглядеть ниже.
res/values/styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:buttonStyle">@style/AppTheme.Button</item>
</style>
<style name="AppTheme.Button" parent="android:Widget.Button">
<item name="android:background">@color/my_color</item>
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
Для API версии 21 файл стиля ресурса должен выглядеть как (res/values-v21/style.xml)
<resources>
<style name="AppTheme.Button" parent="android:Widget.Material.Button">
<item name="android:background">@color/my_color</item>
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
Спасибо, дайте мне знать, если у вас есть какие-либо вопросы.