На данный момент я расширяю Dialog
и использую конструктор Dialog(Context context, int theme)
, чтобы установить цвет фона с помощью темы. Этот диалог является наложением, поэтому он расположен над всем, что отображается на экране. Тема выглядит следующим образом:
<style
name="Theme.example"
parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@color/background_color</item>
</style>
Обратите внимание, что эта тема устанавливает цвет фона с помощью атрибута android:windowBackground
. Мне нужно весь экран , чтобы изменить цвет, включая панель уведомлений. Но я также хочу иметь возможность динамически изменять фон в Java после отображения диалогового окна. Лучший способ, который я придумал, это использовать getWindow().setBackgroundDrawableResource(R.drawable.background)
, где Drawable
- это всего лишь один пиксель нужного мне цвета.
Есть ли лучший способ сделать это? Мой текущий метод работает нормально, но было бы неплохо иметь возможность использовать цвета, которые я не предопределил в R.drawable
.