可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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);