Изменение цвета Android по умолчанию исчезать / холст при вызове диалога

Я работал над приложением и дошел до того, что оно требует от меня отображения окна меню в середине экрана.

Я использовал объект AlertDialog, заполненный пользовательским представлением, но теперь мне потребовалось "окружить" окно полупрозрачным белым свечением, а не сероватым по умолчанию. Я сделал то же самое с зацветанием некоторых навигационных ящиков в моем приложении, но в этом случае у меня был особый метод, чтобы быстро помочь мне решить эту проблему. Пока что я не нашел ничего, что помогло бы мне решить эту проблему.

Я попытался создать стиль по умолчанию с новым значением "windowBackground", но я столкнулся с 3 проблемами с самого начала:

  • Я больше не могу отключить AlertDialog, щелкнув за пределами макета (я предполагаю, потому что, изменяя цвет таким образом, все теперь является макетом)
  • Окно меню теперь окружено черным контуром, которого раньше не было
  • Используя фильтрующий поиск внутри макета, который манипулирует членами списка, окно сворачивается само по себе.

Есть ли способ выполнить то, что я хочу более или менее напрямую?

1 ответ

Я не совсем уверен в этом, но вы можете использовать это в вашем styles.xml

<style name="MyDialogTheme" parent="android:Theme.AppCompat.Light.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/your_light_color</item>
<item name="android:backgroundDimEnabled">false</item>

И если вы хотите закрыть диалоговое окно при нажатии снаружи, используйте это:

dialog.setCanceledOnTouchOutside(true);

или же

<item name="windowCloseOnTouchOutside">true</item>

в вашем styles.xml

Другие вопросы по тегам