安卓梯度在棒棒糖系统上无法工作 - API 21

12

当我尝试在棒棒糖版本上使用渐变效果时,它无法正常工作。但是在之前的所有版本中都可以正常工作。

以下是我的示例:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:type="radial" android:gradientRadius="500"
    android:startColor="#00417e" android:endColor="#001b34" />


2
径向渐变在棒棒糖版本中存在问题,Bug报告请见https://code.google.com/p/android/issues/detail?id=77862。 - Azae B. Garcia
5个回答

23

我遇到了同样的问题,并创建了2个不同的文件:

在drawable文件夹中

android:gradientRadius="270"

还有在drawables-v21中

android:gradientRadius="270dp"

现在它工作得很好。


9

解决方法在链接中描述。我只是想知道当5.0.x或5.x发布时,这个解决方法是否会失效或者仍然有效。 - Daniel Benedykt
1
这个解决方法将在未来版本中继续有效。我已经更新了相关的AOSP问题跟踪器错误链接以反映这一点。 - alanv
@alanv 最近几天ASOP中有人关闭了所有重要的bug,而没有任何评论。其中一些bug非常重要...你们在做什么?http://www.reddit.com/r/androiddev/comments/2on1fe/google_closed_11889_android_bugs_last_48_hours/ - Krupal Shah
1
感谢@Krupal Shah!在阅读这个答案之前,我花了2个小时尝试不同的解决方案,而这个愚蠢和恼人的问题让我疯狂。 - tomalf2

2
int sdk = android.os.Build.VERSION.SDK_INT;
    if (sdk < Build.VERSION_CODES.LOLLIPOP) {
        //in your gradient use android:gradientRadius="500"
    } else {
      // in your gradient use android:gradientRadius="80%p" or 
      // android:gradientRadius="200dp"

尝试使用不同的gradientRadius样式编写两个不同的XML文件。

0

看起来我找到了另一个解决方法 - 在代码中设置渐变背景:

findViewById(R.id.bg).setBackground(ContextCompat.getDrawable(context,R.drawable.bg_gradient));

对我来说,这与在xml中设置android:background的结果相同。 - Salvador

-1

像这样使用就可以了:

android:gradientRadius="50%p"

这不是一个完整的解决方案:它在我的棒棒糖5.0.2(API 21)上产生了渐变,但在我的奇巧4.4.2(API 19)上却填充了“endColor”。 - Salvador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接