【问题标题】:What's the difference between windowBackground and background for activities style?活动风格的 windowBackground 和 background 有什么区别?
【发布时间】:2013-01-03 18:05:35
【问题描述】:

通过在样式中使用“android:background”参数并将应用程序的主题设置为链接到此样式,我为应用程序的所有活动设置了背景。

一切都很好,直到我注意到对于带有项目列表的对话框,它使每个项目都具有背景的完整大小。

将使用的参数更改为“android:windowBackground”后,在这种情况下似乎也可以正常工作。

为什么会发生?两者有什么区别?

另外,将“android:windowBackground”设置为@null 为written here 是否提供与使用“android:background”相同的速度提升?

【问题讨论】:

    标签: android background styles android-activity android-theme


    【解决方案1】:

    android:background 是视图组件的背景颜色(准确地说是可绘制的),而android:windowBackground 是视图所在的窗口(活动或对话框)的背景颜色。

    默认情况下,视图是透明的(即没有背景颜色),因此在视觉上看起来它们是从底层窗口获取颜色的。

    请注意您链接到的文章如何提到将 windowBackground 设置为 null 而不是全屏视图的背景。这是避免过度绘制的常用技术。

    但是如果您有一个视图完全隐藏另一个视图,则可以将相同的原则应用于视图。

    示例:gist.github.com/floatingmonkey/5474959

    【讨论】:

    • 那么为什么活动/应用程序有 android:background,如果它实际上为它的每个视图都设置了它?我不明白它的用途。顺便说一句,您还可以将图像设置为背景而不仅仅是颜色。此外,修复了文章的混乱。
    • 您可以将任何有效的 android:whatever 属性传递给任何组件。如果它不适用于该组件,它将忽略该属性。 (这可能会令人困惑,但它是 android 确保向后兼容性的方式)。也是的,您可以将图像、颜色或任何可绘制对象(渐变、形状甚至动画)作为背景和 windowBackground 的值传递。
    • 但我仍然不明白如何在 android:background 上使用图像在活动/应用程序上使一切都使用它,而不仅仅是活动的背景,以及为什么它甚至存在于那里它有如此奇怪的行为。你也可以试试这个测试:创建一个新的 hello world 应用程序,并设置为你创建的主题以将此属性与图像一起使用。您会注意到,活动上的许多视图现在都将使用此背景。
    • 当您将样式作为主题应用到活动时,它也适用于该活动中的所有视图。同样,某些属性可能仅在窗口级别有意义,反之亦然 - 所有不适用于组件的属性都将被忽略。这可能会令人困惑并导致错误,但它也非常灵活。
    • 有趣。您的意思是这只是在整个应用程序中使用样式的一个示例,例如,如果我愿意,我可以设置所有 textView 实例的样式?这是属性的目的吗?
    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2016-05-23
    • 2011-04-26
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多