【问题标题】:Android Gradient on Lollipop not working. - API 21Lollipop 上的 Android 渐变无法正常工作。 - API 21
【发布时间】:2014-12-09 17:06:22
【问题描述】:

当我尝试在 Lollipop 上使用渐变时,它不起作用。 虽然它适用于所有以前的版本。

这是我的例子:

<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" />

【问题讨论】:

标签: android gradient android-5.0-lollipop


【解决方案1】:

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

在可绘制对象中

android:gradientRadius="270"

在drawables-v21中

android:gradientRadius="270dp"

现在可以正常使用了。

【讨论】:

    【解决方案2】:

    这是一个错误。在这里检查:https://code.google.com/p/android/issues/detail?id=77862

    【讨论】:

    • 链接中描述了解决方法。我只是想知道当 5.0.x 或 5.x 推出时,这种解决方法是否会中断甚至工作。
    • 该变通方法将在未来版本中继续有效。我更新了链接的 AOSP 问题跟踪器错误以反映这一点。
    • @alanv 在过去的几天里,ASOP 中的某个人正在关闭所有重要的错误,而没有任何类型的 cmets。有些错误真的很重要......你们在做什么? reddit.com/r/androiddev/comments/2on1fe/…
    • 感谢@Krupal Shah!在阅读这个答案之前,我花了 2 个小时尝试不同的解决方案,而这个愚蠢而烦人的问题让我发疯了。
    【解决方案3】:
    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文件

    【讨论】:

      【解决方案4】:

      似乎我找到了另一种解决方法 - 在代码中设置渐变背景:

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

      【讨论】:

      • 对我来说,这与在 xml 中设置 android:background 的结果相同。
      【解决方案5】:

      这样使用就可以了:

      android:gradientRadius="50%p"
      

      【讨论】:

      • 这不是一个完整的解决方案:它会在我的 Lollipop 5.0.2 (api 21) 上产生渐变,但在我的 KitKat 4.4.2 (API 19) 上它会填充endColor。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      相关资源
      最近更新 更多