Chi*_*giz 5 android statusbar android-studio
我最近想让我的状态栏颜色渐变.我知道WindowManager的工作方式.但我决定找另一种方法用渐变为我的状态栏着色.
所以我这样做了,
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">@drawable/gradient</color>
<color name="colorAccent">#FF4081</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
@绘制/梯度
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:angle="135" android:startColor="#f56f2c" android:endColor="#fa9f46"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
@ drawable/gradient是我设置的渐变颜色.虽然IDE说它不是正确的方法,但它是有效的.
我的问题:这是正确的方法吗?有没有人有这种经历?
从 Android N (API 25) 开始,这将中断并出现以下错误:
android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID...
Run Code Online (Sandbox Code Playgroud)
这与这个SO 问题几乎是相同的错误,并且正如答案所指出的,错误/崩溃是故意的。我猜原因是 Android 之神现在严格禁止您对 @color 资源使用除颜色以外的其他内容。所以,这绝对不是“正确的方法”。
解决方法是使用自定义工具栏,您可以在其中使用可绘制渐变作为背景。
我确实在 SO 上尝试了另一个解决方案,它声称适用于 API 24+,但遗憾的是它在 API 25 和 26 中中断。它看起来确实像是 Android 应该简单地使用的东西,但事实并非如此。
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |