Можно ли изменить цвет фона окна диалога без темы? - PullRequest
3 голосов
/ 03 октября 2011

На данный момент я расширяю 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.

1 Ответ

3 голосов
/ 03 октября 2011

Попробуйте с классом ColorDrawable.

Вы можете создать новый экземпляр класса ColorDrawable и установить его в качестве фона.Всякий раз, когда вам нужно изменить цвет, вы можете просто позвонить setColor(int color) в этом классе.

ColorDrawable colorDrawable = new ColorDrawable();
// ColorDrawable colorDrawable =
//     new ColorDrawable(0xFF00FF00);    // With a custom default color.

colorDrawable.setColor(0xFFFF0000);
...