目前我扩展了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
中未预定义的颜色会很好。
答案 0 :(得分:3)
使用ColorDrawable
类尝试。
您可以创建ColorDrawable
类的新实例并将其设置为背景。每当您需要更改颜色时,您只需拨打setColor(int color)
在那个班上。
ColorDrawable colorDrawable = new ColorDrawable();
// ColorDrawable colorDrawable =
// new ColorDrawable(0xFF00FF00); // With a custom default color.
colorDrawable.setColor(0xFFFF0000);