我正在尝试为我的工具栏设置渐变,但似乎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);
我错过了什么吗?如果重要,方向总是线性的
答案 0 :(得分: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);