1

我正在尝试为我的工具栏设置渐变,但似乎 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);

我错过了什么吗?如果重要的话,方向总是线性的

4

1 回答 1

3

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

感谢@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);
于 2017-02-16T13:50:39.713 回答