#android #android-styles #android-7.0-nougat
#Android #android-стили #android-7.0-nougat
Вопрос:
Я переопределил стиль кнопок по умолчанию в своем приложении следующим образом:
<style name="ButtonStyle" parent="Base.Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
<item name="android:textSize">18sp</item>
<item name="android:textColor">@color/primaryTextContrast</item>
<item name="android:background">@drawable/button</item>
</style>
До Nougat это работало нормально, но с Nougat произошли изменения (я думаю, исправление ошибки), так что этот стиль также применяется к кнопкам в диалоговых окнах, в то время как в предыдущих версиях этого не было. Это приводит к приданию кнопкам диалога белого текста на белом фоне.
В случае, если это актуально, button
это патч 9 в drawable
и переопределен в drawable-v21
:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="?attr/colorPrimary"/>
</ripple>
Основной цвет темный, а primaryTextContrast
белый. По какой-то причине диалоги не получают темных кнопок в Nougat — кажется, они подбирают цвет текста, но не фон. Итак, мне нужно либо позволить кнопкам диалогового окна работать по умолчанию, либо заставить кнопки полностью наследовать стиль с темным фоном и белым текстом.
Комментарии:
1. Вы нашли какое-либо решение? Я сталкиваюсь с той же проблемой
2. Нет, у меня нет.
Ответ №1:
@nasch, кнопки диалогового окна используют стиль панели кнопок. В этом сценарии вы могли бы сделать что-то вроде
<style name="buttonBarButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
<item name="android:textColor">@color/colorPrimary</item>
</style>
Затем в вашем основном определении стиля вы определяете
<style name="MyCustomTheme" parent="Theme.AppCompat">
<item name="buttonBarButtonStyle">@style/buttonBarButtonStyle</item>
...
Надеюсь, это поможет.