从v1.4.0版本开始,不再需要(不建议使用)在先前版本中负责设置颜色的ColorTemplate对象。然而,它仍然保留所有预定义的颜色数组(例如,ColorTemplate.VORDIPLOM_COLORS并提供方便的方法,用于将颜色从资源(资源整数)转换为“真实”颜色。
现在可以通过DataSet对象直接指定颜色而不是通过ColorTemplate,这允许为每个DataSet单独设置样式。
在这个简短的例子中,我们有两个不同的LineDataSet对象代表两家公司的季度收入(之前在设置数据教程中提到过),我们现在想要设置不同的颜色。
我们想要什么:
- “公司1”的值应由“红色”的四种不同变体表示
- “公司2”的值应由“绿色”的四种不同变体表示
这就是代码的样子:
LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1");
// sets colors for the dataset, resolution of the resource name to a "real" color is done internally
setComp1.setColors(new int[] { R.color.red1, R.color.red2, R.color.red3, R.color.red4 }, Context);
LineDataSet setComp2 = new LineDataSet(valsComp2, "Company 2");
setComp2.setColors(new int[] { R.color.green1, R.color.green2, R.color.green3, R.color.green4 }, Context);
除此之外,还有许多其他方法可以为一个DataSet设置颜色,下面是一个完整的文档:
- setColors(int [] colors, Context c):设置此DataSet应使用的颜色。只要DataSet表示的条目数高于colors数组的大小,就会重复使用颜色。您可以使用“new int [] {R.color.red,R.color.green,...}”为此方法提供颜色。在内部,使用getResources().getColor(...)解析颜色。
- setColors(int [] colors):设置此DataSet应使用的颜色。只要DataSet表示的条目数高于colors数组的大小,就会重复使用颜色。在将它们添加到DataSet之前,请确保已准备好颜色(通过调用getResources().getColor(...))。
- setColors(ArrayList<Integer> colors):设置此DataSet应使用的颜色。只要DataSet表示的条目数高于colors数组的大小,就会重复使用颜色。在将它们添加到DataSet之前,请确保已准备好颜色(通过调用getResources().getColor(...))。
- setColor(int color):设置应用于此DataSet的唯一颜色。在内部,这将重新创建颜色数组并添加指定的颜色。
ColorTemplate 示例:
LineDataSet set = new LineDataSet(...);
set.setColors(ColorTemplate.VORDIPLOM_COLORS);
如果没有为一个 DataSet设置颜色,则使用默认颜色。