渐变XML可绘制中心不起作用

时间:2016-08-19 21:36:20

标签: android xml gradient android-drawable android-resources

我正在尝试创建一个XML渐变drawable以匹配Material Design guidelines

中提到的这种样式

Gradient guideline

这是我的XML代码:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="270"
        android:centerY="30%"
        android:endColor="@android:color/transparent"
        android:startColor="#4d000000"
        android:type="linear"/>
</shape>

我已经尝试将centerY设置为0.3,但没有成功。预览中的drawable总是看起来一样。

有人可以告诉我该怎样做才能达到这种风格吗?提前谢谢。

4 个答案:

答案 0 :(得分:5)

我不太明白你的错误。您可能首先必须设置centerColor。如果您还没有,请查看文档:

https://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html

但是在使用XML drawable进行线性渐变之前,我建议你使用Roman Nuriks尝试解决这个问题。在这里查看更多: https://plus.google.com/+RomanNurik/posts/2QvHVFWrHZf 他通过使用Drawable的Java实现解决了这个问题。像任何其他绘画一样工作。

答案 1 :(得分:4)

如果没有设置centerColor,

centerX / centerY不起作用。

答案 2 :(得分:1)

试试这个:

 <gradient
     android:angle="270"
     android:centerColor="#b6babd"
     android:endColor="@android:color/transparent"
     android:startColor="#62471a"
     android:centerY="30%"

 />

我将centerColor设置为另一种颜色,仅供您查看工作方式,但您可以更改为透明。 centerY属性与centerColor一起使用。

答案 3 :(得分:1)

试试这个:

<gradient
            android:angle="90"
            android:startColor="#FFFFFFFF"
            android:endColor="#FFCCCCCC"
            android:centerColor="#FFFFFFFF"
            android:centerY="0.9"
            android:type="linear" />

你必须设置android:centerColor,这种方式对我很好。