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