【问题标题】:windowBackground in Android 6 (Marshmallow)Android 6 中的窗口背景(棉花糖)
【发布时间】:2016-01-04 20:28:31
【问题描述】:

我使用以下元素为我的应用程序定义了一个基本样式:

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

在我在所有背景都是白色的 Android 6 上测试我的应用程序之前,它已经为我的所有活动设置了背景颜色。在运行 pre-marshmallow 的设备上,背景仍然是 color/window_background。

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

编辑更多信息: 我的目标是 API 22,我没有对以前的版本进行任何更改或升级 API,只是在 Android 6 上运行会改变背景。

【问题讨论】:

  • 您的目标是 API 22 还是 API 23?
  • 我有一个类似的问题,我的一些背景是用原色填充的,我已经从我的样式中删除了actionBarTheme,它似乎解决了背景问题。但是(多么出乎意料)我的操作栏样式不正确。
  • 在您的问题中提供更多详细信息,例如您使用的是哪个主题,目标 API
  • 照原样,这个问题无法回答。我无法使用简单的空白应用程序重现该问题,并且您没有提供正确的 MCVE。您的应用程序设置、布局、视图、代码中存在导致此问题的某些内容。在无法重现问题的情况下,我们都只能胡乱猜测。即使遇到类似问题的人也会给你错误的答案,因为他们的问题可能与你的不同。
  • @DalijaPrasnikar 好吧,我不太同意。是的,这可能是别人有同样问题的猜测,但是,这个猜测可能是帮助某人的事情。由于我不是唯一一个遇到这个问题的人,我希望有人已经解决了它并且知道它是什么。

标签: android android-6.0-marshmallow


【解决方案1】:

我没有发现任何特定于 Marshmallow 的东西会导致这种情况。所以我的建议是:

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

发件人:

<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

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

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

  • 主题的背景Drawable
  • 纯色(通过 setColor(int) 设置)
  • 两个 Drawable,前一个和当前(通过 setBitmap(Bitmap) 或 setDrawable(Drawable) 设置),可能处于过渡状态

BackgroundManager

我找不到Marshmallow中的主题或元素顺序是否有差异,似乎没有根本性的变化,我找不到这方面的错误。

我希望这会有所帮助,让我知道,我可以再看看。

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

【讨论】:

  • 我遇到了同样的问题,但是使用形状资源的解决方案对我不起作用。这个错误(或其他错误)的最大问题是它也发生在例如 PreferenceFragment 中,它不像普通布局那样容易覆盖。
  • 抱歉耽搁了,感谢您的回答/调查。我一直在玩不同的风格,似乎它们可能是压倒背景的东西。但是,我还没有真正能够重现该问题。由于很多人都有同样的问题,我虽然会有一个简单的答案,但我想没有。所以三重检查你的风格人:) 如果没有准确的答案出现,我会给你赏金。谢谢!
【解决方案2】:

我曾经遇到过同样的问题,但我尝试发现如果我以我的风格评论actionBarTheme,它会突然开始工作。我深入挖掘了我的样式,发现操作栏的样式在将其注释掉后设置了 android:background 属性,现在一切正常。

【讨论】:

  • 注释掉所有的android:background实例,没有变化。
【解决方案3】:

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

【讨论】:

  • 试过这个,它在几个地方添加了windowBackground,但它没有改变背景。
【解决方案4】:

如何设置windowBackgroundcolorBackground

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

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2016-02-06
    • 2016-02-10
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多