【问题标题】:Android Studio app crashes on launch when using ?colorVariant in xml drawable在 xml drawable 中使用 ?colorVariant 时,Android Studio 应用程序在启动时崩溃
【发布时间】:2020-12-15 10:49:23
【问题描述】:

我的一个 xml 可绘制对象中有一个形状,它使用了我的 Themes.xml 文件的样式:

<shape android:shape="oval">
    <gradient
        android:gradientRadius="134dp"
        android:startColor="?colorPrimary"
        android:centerColor="#000000"
        android:endColor="#000111"
        android:type="radial" />
</shape>

如您所见,startColor 使用 colorPrimary 属性。但是,当我在 Android Studio 模拟器中启动该应用程序时,它会崩溃而没有构建错误。当我用随机的十六进制颜色替换 ?colorPrimary 时,一切似乎都很好。我正在使用 API 24,据我所知,您可以将 ?colorVariant 用于 >API 21。不知道我在这里做错了什么。

【问题讨论】:

  • 你仍然可以使用@color/purple_500 之类的东西。问题不是颜色参考
  • 那我怎么能引用 ?colorPrimary 呢?当我使用明暗模式时,我希望有不同的渐变。
  • 应该是?attr/colorPrimary 吗?
  • 如果我使用它,我的应用程序会崩溃
  • ?attr/colorPrimary ?并在主题中定义colorPrimary

标签: java android xml android-studio android-layout


【解决方案1】:

使用类似 android:startColor="@color/purple_500" 的东西查看你的 colors.xml 并从那里调用你的颜色

如果您想在白天和晚上使用 2 种颜色,请进入您的项目目录 resources folder(res) 并创建新文件夹名称 drawable-night 并从 drawable 复制您的 shape.xml 并将其粘贴到 drawable-night 去 android工作室现在你有 2 个shape.xml 文件一个是晚上,另一个是白天添加你想要添加的颜色像
shape.xml 添加 android:startColor="@color/purple_500"
对于 shape.xml(night) 添加 android:startColor="@color/purple_200"

【讨论】:

  • 问题是我想在明暗模式下使用不同的颜色
  • 我更新了我的答案,看看对你有没有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多