Android XML中具有父级大小的径向梯度

Android XML中具有父级大小的径向梯度,android,android-layout,android-xml,Android,Android Layout,Android Xml,我正在尝试实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用9patch或带有阴影的png会更容易,但我想在其状态下(按下等)以编程方式更改其颜色和大小,因此我决定尝试使用9个图像,全部采用XML格式,因此阴影从组件的侧面开始渐变 <!-- Left Shadow layer --> <item> <shape android:shape="rectangle" > <gradient android

我正在尝试实现一个组件来为按钮或其他组件制作自定义阴影,我知道使用9patch或带有阴影的png会更容易,但我想在其状态下(按下等)以编程方式更改其颜色和大小,因此我决定尝试使用9个图像,全部采用XML格式,因此阴影从组件的侧面开始渐变

<!-- Left Shadow layer -->
<item>
    <shape android:shape="rectangle" >
        <gradient
            android:angle="0"
            android:endColor="#FFFF0000"
            android:startColor="#00FF0000" />
    </shape>
</item>

看起来不错,问题出在角落,android:gradientRadius参数现在设置为固定大小,但在上下文帮助中,可以设置为基本大小10%或父大小10%p的百分比,我想要它设置一个100%p半径,这样渐变总是从主色开始,消失在正方形的边缘

--编辑--

关于gradientRadius的android文档


这就是我现在的位置:(我不知道如何设置此大小以适合其父视图

任何帮助都将不胜感激,当我完成组件时,我将把代码放在一个答案中:),这样典型的按钮可以在xml中有可定制的阴影

组件的映像

<!-- Left Shadow layer -->
<item>
    <shape android:shape="rectangle" >
        <gradient
            android:angle="0"
            android:endColor="#FFFF0000"
            android:startColor="#00FF0000" />
    </shape>
</item>
--编辑--

我仍然对这个感兴趣:)没有人有线索吗


我认为您应该放弃xml,实现可绘制的代码。 扩展Drawable类时,可以使用getBounds()将大小设置为矩形。也可以在onBoundsChange方法中动态重新计算。
您还可以轻松构造渐变并在Paint object中使用它们(setShader方法)

这张图像是您想要的还是到目前为止您已经得到的?hi@Leaudro,这就是我想要的,我可以通过手动设置其宽度和高度使渐变适合非径向渐变。我无法为角创建径向渐变,因此可以重复使用此形状为通用组件创建阴影。嘿,直到有人阅读此内容!,是的,我也这么认为,但这有点像是在讨好:)