【问题标题】:How can I change the loading screen colour without "android:background"?如何在没有“android:background”的情况下更改加载屏幕颜色?
【发布时间】:2026-01-06 22:50:01
【问题描述】:

在我的应用加载之前,我可以使用改变加载屏幕的颜色

<resources>
    <style name="Theme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="android:background">#FF444444</item>
    </style>
</resources>

但是,如果我这样做,我将无法再加载材料设计库的 TimePickerView,因为它显示 Binary XML file line #57: Error inflating class com.google.android.material.timepicker.TimePickerView,更重要的是,Attempted to get ShapeAppearanceModel from a MaterialButton which has an overwritten background.

一旦我删除了上面的android:background,一切都很好。除了我的加载屏幕现在是白色的。

那么,有没有办法在没有上述 XML 属性的情况下更改加载屏幕颜色,希望我可以让材料的TimePicker 工作?或者也许是另一种解决方法?

(我已经找到了如何完全禁用加载屏幕,但第二个左右的等待并不理想。)

【问题讨论】:

  • 你可以尝试使用android:windowBackground 代替
  • 谢谢,我试过了,但没有成功。
  • 尝试在setContentView() 调用后立即使用window.decorView.setBackgroundColor(some_color) 并从样式中删除背景...希望现在可以使用
  • 试试这个也设置android:colorBackground & android:windowBackground 具有相同的颜色,并删除android:Background
  • 你说得对,赞恩。 android:windowBackground 确实有效。但只有当颜色来自@color/whatever而不是字符串时...

标签: android timepicker material-components-android


【解决方案1】:

以下是可能的解决方案(第一个解决的):

  1. 使用android:windowBackground 而不是android:background >> 要求使用资源颜色而不是硬编码的颜色(即@color/some_color
  2. setContentView() 调用后立即使用window.decorView.setBackgroundColor(some_color)
  3. android:colorBackground & android:windowBackground 设置为相同颜色,并删除android:Background

【讨论】:

    最近更新 更多