Я решил попробовать материалы оповещения диалоги на Android. Проблема у меня возникает, когда я пытаюсь применить некоторые стили. Проверяя документы, я нашел это:
<item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>
Поэтому я решил попробовать это:
<style name="BaseTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="materialAlertDialogTheme">@style/Theme.App.MaterialDialogAlert</item>
</style>
<style name="Theme.App.MaterialDialogAlert" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
<!-- FIXME: this does not work. it does not change the title appearance. -->
<!-- <item name="materialAlertDialogTitleTextStyle">@style/TextAppearance.App.MaterialDialogAlert.Title.Text</item>-->
<!-- FIXME: this change only the title font, not the message appearance -->
<item name="android:fontFamily">@font/nunito_semi_bold</item>
<item name="buttonBarPositiveButtonStyle">@style/Widget.App.Button.TextButton</item>
<item name="buttonBarNegativeButtonStyle">@style/Widget.App.Button.TextButton</item>
</style>
<style name="TextAppearance.App.MaterialDialogAlert.Title.Text" parent="MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:fontFamily">@font/nunito_semi_bold</item>
</style>
Но пока я мог успешно разрабатывать кнопки. С заголовком и сообщением у меня есть некоторые проблемы. Теперь я могу применить некоторые стили к названию с помощью:
<item name="android:fontFamily">@font/nunito_semi_bold</item>
Но я не думаю, что это правильный путь. Сначала это не применяет шрифт к разделу сообщения. Во-вторых, я хотел бы применить другие стили текста, один для заголовка и один для раздела сообщений.
Я попытался также проверить этот стиль: MaterialAlertDialog.MaterialComponents.Title.Text
, где я вижу, что этот элемент применяется в какой-то момент:
<item name="android:textAppearance">?attr/textAppearanceSubtitle1</item>
Поэтому я решил объявить это в своей базовой теме:
<style name="BaseTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="textAppearanceSubtitle1">@style/TextAppearance.App.Subtitle1</item>
</style>
<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="android:fontFamily">@font/nunito_semi_bold</item>
</style>
, но ничего не изменилось.
Итак, мои вопросы:
- Как я могу сделать это правильно, используя тему / стили.
- Что я делаю не так с моим текущим кодом?
РЕДАКТИРОВАТЬ Я тоже пытался использовать это:
<style name="Theme.App.MaterialDialogAlert" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
<item name="materialAlertDialogTitleTextStyle">@style/Dialog.App.MaterialDialogAlert.Title.Text</item>
<item name="materialAlertDialogBodyTextStyle">@style/TextAppearance.App.MaterialDialogAlert.Body.Text</item>
<item name="buttonBarPositiveButtonStyle">@style/Widget.App.Button.TextButton</item>
<item name="buttonBarNegativeButtonStyle">@style/Widget.App.Button.TextButton</item>
</style>
<style name="Dialog.App.MaterialDialogAlert.Title.Text" parent="MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textAppearance">@style/TextAppearance.App.Subtitle1</item>
</style>
<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="fontFamily">@font/nunito_semi_bold</item>
<item name="android:fontFamily">@font/nunito_semi_bold</item>
</style>
Но это не работает.