没有主题,能否更改对话框的窗口背景颜色?

3

目前我正在扩展一个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

使用 ColorDrawable 类进行尝试。

您可以创建 ColorDrawable 类的新实例并将其设置为背景。每当您需要更改颜色时,只需调用该类的 setColor(int color) 方法。

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

colorDrawable.setColor(0xFFFF0000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接