Android: тема изменяется в Alert и AlertDialog в зависимости от версии Android - PullRequest
1 голос
/ 30 января 2020

У нас разные взгляды на диалоговые окна предупреждений и диалогов в зависимости от версии.

В стилях. xml у нас есть следующее

<style name="Theme.AppSomething" parent="Theme.MaterialComponents.Light.DarkActionBar">

    <item name="alertDialogTheme">@style/Theme.AppSomething.Alert</item>
    <item name="android:alertDialogTheme">@style/Theme.AppSomething.Alert</item>

    <item name="dialogTheme">@style/Theme.Dialog</item>
    <item name="android:dialogTheme">@style/Theme.Dialog</item>

Все AlertDialogs импортируются в код, подобный этому

    import androidx.appcompat.app.AlertDialog;

Теперь удаляем android:alertDialogTheme отлично работает для Android 8 (ширина окна и кнопки), но кнопки для Android 5 перепутались.

Удаление alertDialogTheme при Android 5 кнопки в порядке, но ширина окна мала. На Android 8 ширина снова мала, но кнопки слипаются.

Проблема в том, что я не могу понять, почему это зависит от версии ОС, какую из двух я должен сохранить, или как мы должны изменить приложение, чтобы иметь некоторую последовательность.

РЕДАКТИРОВАТЬ. Нет значений -v ## / styles. xml папка

1 Ответ

1 голос
/ 30 января 2020

Лучший способ использовать AlertDialog с Theme.MaterialComponents - это использовать класс MaterialAlertDialogBuilder:

new MaterialAlertDialogBuilder(this,)
            .setTitle("Dialog")
            ...
            .show();

и атрибут materialAlertDialogTheme в вашей теме.

<style name="Theme.AppSomething" parent="Theme.MaterialComponents.Light.DarkActionBar">
    ...
    <item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>
</style>
...