我正在尝试为工具栏设置渐变,但是setSize和setGradientCenter似乎不起作用。

我需要动态创建它,因为渐变的中心和高度会根据从CMS获得的值而变化,但是我无法完成这项工作。无论我为大小和中心设置了什么值,渐变始终会获得整个工具栏的大小,并且中心是默认值。

我尝试按照文档所述先调用mutate(),但没有结果。也尝试了setBounds具有相同的结果

GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setOrientation(gradientData.getOrientation());
        gradientDrawable.setColors(gradientData.getColors());
        gradientDrawable.setGradientCenter(gradientData.getCenterX(), gradientData.getCenterY());

toolbar.setBackground(gradientDrawable);


我想念什么吗?如果重要,方向始终是线性的

最佳答案

我将把代码留在这里,以防它对其他人有用。

感谢@pskink示例,它使用ScaleDrawable可以工作。现在,我可以为工具栏设置一个较小的渐变:

int[] colors = {
        Color.RED, Color.YELLOW, Color.RED
};

Drawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, colors);
final Drawable sd = new ScaleDrawable(gd, Gravity.TOP, 0, 1);
sd.setLevel(7500);

toolbar.setBackground(sd);

08-18 08:07