Setting the pie slice colors in MPAndroidChart

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

I need to define specific hex values for each slice in my pie chart.

I'm following the wiki but the method doesn't seem to be working for PieDataSet

PieDataSet dataSet = new PieDataSet(entries, "Fuel"); dataSet.setColors(new int[] { R.color.green1, R.color.green2, R.color.green3, R.color.green4 }, Context); 

These errors are shown:

Cannot resolve symbol 'green1'  Expression expected  <-- At the 'Context' 

Is there an alternate way to set the pie slice color? This seems to work for Line charts but not for pie.

回答1:

Found a work around:

final int[] MY_COLORS = {Color.rgb(192,0,0), Color.rgb(255,0,0), Color.rgb(255,192,0),                                 Color.rgb(127,127,127), Color.rgb(146,208,80), Color.rgb(0,176,80), Color.rgb(79,129,189)};                         ArrayList<Integer> colors = new ArrayList<Integer>();                          for(int c: MY_COLORS) colors.add(c);                          dataSet.setColors(colors); 


回答2:

This way you can use proper color names from colors.xml:

    final int[] pieColors = {             BaseActivity.getAppColor(R.color.blue),             BaseActivity.getAppColor(R.color.SandyBrown),             BaseActivity.getAppColor(R.color.silver),             BaseActivity.getAppColor(R.color.FireBrick),             BaseActivity.getAppColor(R.color.gray),             BaseActivity.getAppColor(R.color.DarkMagenta),             BaseActivity.getAppColor(R.color.olive),             BaseActivity.getAppColor(R.color.MidnightBlue),             BaseActivity.getAppColor(R.color.purple),             BaseActivity.getAppColor(R.color.DeepSkyBlue),             BaseActivity.getAppColor(R.color.maroon),             BaseActivity.getAppColor(R.color.HotPink),             BaseActivity.getAppColor(R.color.teal),             BaseActivity.getAppColor(R.color.Purple),             BaseActivity.getAppColor(R.color.green),             BaseActivity.getAppColor(R.color.MediumSeaGreen)     };      ArrayList<Integer> colors = new ArrayList<>();     for (int color : pieColors) {         colors.add(color);     }      dataSet.setColors(colors);      ...   public static int getAppColor(int resourceId) {     Context context = MyApplication.getMyApplicationContext();     int color;     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {         color = context.getResources().getColor(resourceId, context.getTheme());     }     else {         //noinspection deprecation         color = context.getResources().getColor(resourceId);     }     return color; } 


回答3:

final int[] MY_COLORS = {         Color.  rgb(0,255,255),         Color. rgb(65,105,225) };  ArrayList<Integer> colors = new ArrayList<>();  for(int c: MY_COLORS) colors.add(c);  dataSet.setColors(colors); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!