Пользовательский диалог оповещения выглядит странно на Android 4.x
Я хочу настроить диалоговое окно предупреждений в своем приложении для Android, поэтому я начал с изменения атрибута alertDialogTheme темы моего приложения следующим образом:
RES / значения /themes.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"/>
</resources>
Я просто не ожидал, что диалоговое окно будет выглядеть иначе, чем стандартное, потому что новая тема AlertDialogTheme точно такая же, как и ее родительская тема. На Android Lollipop он работал нормально, но в Android Kitkat за диалогом появляется белый прямоугольник. Вот как это выглядело:
Я делаю что-то не так? Может быть, использование не того родителя?
Спасибо!
3 ответа
Это происходит потому, что вы используете AlertDialog
вместо относительно нового AlertDialogCompat
, В этом разделе представлены одинаковые диалоги в стиле Material Design на всех платформах, и мы настоятельно рекомендуем его использовать.
Чтобы использовать его, вы должны быть уверены, что в вашем файле Gradle есть следующая строка внутри ваших зависимостей:com.android.support:appcompat-v7:24.2.1
(Это последняя версия. Убедитесь, что все ваши пакеты обновлены, заглянув в SDK Manager).
Затем в Деятельности, где вы хотите показать это, вы должны импортировать android.support.v7.app.AlertDialog
и используйте AlertDialog.Builder точно так же, как вы использовали его ранее.
Я исправил это с помощью кода ниже:
<style name="CustomAppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
Для тех из вас, кто использует AndroidX, вы захотите использовать следующий импорт:
import androidx.appcompat.app.AlertDialog
добавлять
appcompat
зависимость от вашего сценария сборки:implementation 'com.android.support:appcompat-v7:27.1.1'
Заменить все использования
android.app.AlertDialog
сandroid.support.v7.app.AlertDialog
,