【问题标题】:android: does ScrollView has different default backgrounds for different API level?android: ScrollView 对于不同的 API 级别有不同的默认背景吗?
【发布时间】:2016-09-28 16:34:22
【问题描述】:

我有一个ScrollView,里面有一些孩子。

对于 API 23,ScrollView 具有白色背景。但对于 API 22 及以下版本,背景是灰色的。我没有在 xml 或代码中设置背景。其余全部默认。 Activity 和 Fragment 在布局 xml 中也有默认背景。 Activity 主题默认为 Theme.Holo.Light.NoActionBar,v21 为 Theme.Material.Light.NoActionBar。

我看到这个:

三星note 5 with 6.0.0:白色

带有 6.0.0 的安卓模拟器 Nexus 6P:白色

samsung s6 with 5.1.1: 灰色

带有 5.1.1 的安卓模拟器 Nexus 6P:灰色

带有 4.4.4 的小米 4 LTE:灰色

带有 4.4.4 的安卓模拟器 Nexus 6P:灰色

根据上面的测试,我猜是API级别相关的背景。

如果我在 xml 中将背景设置为白色,对于 API 22 及以下版本,我可以看到白色背景。

有什么想法吗?

【问题讨论】:

  • 分享你的xml代码
  • 我认为这与某些 API 级别无关。我猜它有点特定于设备。从来没有真正遇到过这个问题,因为我总是设置正确的背景颜色。我猜也建议这样做。
  • 我敢打赌 ScrollView 在所有 API 级别中都是透明的,您看到的不是父级的背景吗?
  • @pskink 所有活动和片段都没有设置背景,全部保持默认。
  • 所以它是有背景的根窗口,而不是你的ScrollView,它很可能是android:windowBackground,但我 100% 确定

标签: android scrollview


【解决方案1】:

如果您没有提供明确的颜色,它可能会采用设备默认主题的颜色。它不依赖于 API 级别,而是依赖于设备主题。 因此,您也可能会在两个不同的设备上看到相同 API 级别的不同颜色。 因此,如果您想在所有设备上保持一致,始终建议您明确设置所需的颜色。

【讨论】:

  • 是的!为我想要的明确设置值。谢谢。但我想知道为什么不同 API 级别的颜色会发生变化,请参阅我的帖子以了解经过测试的设备。
  • 因为每个 API 级别都有一个特定的主题,例如 holo.light 或 holo.dark 等。根据该 API 的主题,颜色会发生变化。同样适用于不同的设备。如果你想让你的组件颜色主题独立,你必须使用显式颜色。
  • 似乎是合理的。但我真的不认为简单的背景主题可能会有很大差异......
  • 主题在背景上没有区别,但在一般设备上。因此,一个主题的默认颜色可能与另一个主题的默认颜色不同。因此,我们可能会看到不同的背景颜色,或者任何其他组件的颜色保留为默认颜色。
【解决方案2】:

在不同的 android API 中以您的风格尝试相同的背景:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多