可以更改没有主题的Dialog的Window背景颜色?

时间:2011-10-03 09:03:51

标签: android background drawable

目前我扩展了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 个答案:

答案 0 :(得分:3)

使用ColorDrawable类尝试。

您可以创建ColorDrawable类的新实例并将其设置为背景。每当您需要更改颜色时,您只需拨打setColor(int color)  在那个班上。

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

colorDrawable.setColor(0xFFFF0000);