2015-10-07 122 views
13

我已经定义了一个基本样式为我用下面的元素应用:windowBackground Android中6(棉花糖)

<item name="android:windowBackground">@color/window_background</item> 

,直到我测试我的应用程序在Android 6其中已设置背景颜色为我所有的活动细所有背景都是白色的。在运行棉花糖前的设备上,背景仍然是color/window_background。

任何人都知道如何使这项工作(或为什么它不工作)在Android 6上?

编辑一些更多信息: 我针对API 22,我没有改变任何东西从以前的版本或升级的API,只是运行在Android 6改变背景。

+0

你的目标API 22或API 23? –

+0

我有类似的问题,我的一些背景充满了原色,我从我的风格中删除了'actionBarTheme',它似乎修复了背景问题。然而(意外)我的行动酒吧不正确的风格。 –

+0

在你的问题中提供更多的细节,例如你正在使用哪个主题,目标API –

回答

2

我还没有找到任何具体的棉花糖会导致这一点。所以我的建议是:

将背景颜色资源更改为可绘制形状资源。

来源:

<item name="android:windowBackground">@color/window_background</item> 

要:

<item name="android:windowBackground">@drawable/window_background</item> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="@color/window_background"/> 
</shape> 

如果你没有检查的所有观点不透明度:

确保您windowBackground实际上是后台 您的活动(特别是超过可滚动款 是最重要的是避免),在可能的情况下移除不透明的视图背景 。

Make your windowBackground work for you instead of using null

我认为这是有趣的,看到的背景图层的设置优先级。我不确定您是否设置了任何视图背景或您是如何设置应用的,但这值得一读。

背景几层组成,从后到前:

  • 主题
  • 纯色
  • 2绘项目(通过的setColor(int)的设定)的背景可绘制对象,以前和当前(通过setBitmap(Bitmap)或setDrawable(Drawable)设置),其可以在转换中

BackgroundManager

我找不到与棉花糖的主题或元素的顺序有什么不同,似乎没有根本性的变化,我也没有发现这个问题。

我希望这可以帮助,让我知道,我可以再看一次。

如果这没有帮助,可能值得发布一些与该问题相关的更多代码。干杯。

+0

我想我说它应该工作,并从代码我可以看到我只能猜测它为什么不工作。 –

+0

我遇到同样的问题,但使用形状资源的解决方案对我无效。这个bug的最大问题(或者其它)是因为它也发生在PreferenceFragment中,它不像普通布局那样容易覆盖。 –

+0

@MatousHybl我看到了你的答案,它看起来不错,与我所说的一致,那个背景被放置在一个视图上,并且超出了定制风格。当你无法看到大部分代码时,也很难调试某人的代码。 –

1

我曾经有过一个相同的问题,但我发现通过尝试,如果我在我的风格评论actionBarTheme,它开始突然工作。我深入挖掘了我的风格,并发现在评论完所有事情之后,行动栏的风格正在设置android:background属性。

+0

注释掉了android:background的所有实例,没有任何更改。 – Heinrisch

0

如果您使用的是Android Studio 1.4或更高版本,请转至您的主题所在的样式,然后点击右上角的“打开编辑器”。然后在那里改变你的窗口背景。它应该是在 “Android:colorBackground”

+0

试过这个,它在几个地方添加了windowBackground,但它并没有改变背景。 – Heinrisch

0

如何设置这两个windowBackgroundcolorBackground

<item name="android:windowBackground">@color/window_background</item> 
<item name="android:colorBackground">@color/window_background</item>