如何在MPAndroidChart中设置颜色?

13

我正在使用MPChartlib制作一个基本的柱状图(3个条形和值在0到100之间)。

应用程序的背景是黑色的,因此我想将文本放置在白色中,但是当我将颜色代码设置为string.xml中存储的chart_color时,即使设置为"FFFFFF",文本仍然显示为深蓝色。

   //Axe X
   XAxis x = barchart.getXAxis();
   x.setPosition(XAxisPosition.BOTTOM);
   x.setTextColor(R.color.chart_color);
   x.setAxisLineColor(R.color.chart_color);


   // Design
   barchart.setDragEnabled(false);
   barchart.setDrawGridBackground(false);
   barchart.setTouchEnabled(false);
   barchart.setHighlightEnabled(false);
   barchart.setMaxVisibleValueCount(101);
   barchart.setDescription(null);
   barchart.setGridBackgroundColor(R.color.chart_color);

   barchart.invalidate(); // refresh

   //Axe Y
   barchart.getAxisLeft().setAxisMaxValue(100);
   barchart.getAxisLeft().setDrawTopYLabelEntry(true);
   barchart.getAxisLeft().setDrawAxisLine(false);
   barchart.getAxisLeft().setDrawGridLines(false);
   barchart.getAxisLeft().setAxisLineColor(R.color.chart_color);
   barchart.getAxisLeft().setTextColor(R.color.chart_color);

   barchart.getAxisRight().setAxisMaxValue(100);
   barchart.getAxisRight().setDrawTopYLabelEntry(true);
   barchart.getAxisRight().setAxisLineColor(R.color.chart_color);
   barchart.getAxisRight().setTextColor(R.color.chart_color);

我尝试了很多方法和研究,但是找不到问题所在。这个库是否没有使用相同类型的颜色代码或其他什么东西?

感谢您的帮助, Alex

2个回答

22

你正在向库传递资源ID,而不是实际的颜色。

使用以下方法获取颜色:

    int color = ContextCompat.getColor(context, R.color.chart_color);

    LineDataSet dataSet = ...;
    dataSet.setColor(color);
您也可以在文档中找到这个内容。

@Philipp Jahoda根据y轴值设置条形颜色,使用MPAndroidChart是否可能? - Karthikeyan Ve
2
getColor已经被弃用了!请使用ContextCompat.getColor(context, R.color.white); - Davoud Badamchi

7
如果您想改变条形图的颜色,最好像以下示例那样同时传递上下文。
ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(87f, 0));
        entries.add(new BarEntry(90f, 1));


        ArrayList<String> labels = new ArrayList<>();
        labels.add("title 1");
        labels.add("title 2);

        BarDataSet dataSet = new BarDataSet(entries, "# of Calls ");
        BarData barData = new BarData(labels, dataSet);
        dataSet.setColors(new int[]{R.color.color1 , R.color.color2} , context);
        barChart.setData(barData);
        barChart.animateY(3000 , Easing.EasingOption.EaseOutBack );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接