MPAndroidChart中柱状图无法设置颜色

4

我希望为来自MPAndroidChartBarChart设置特定颜色。根据文档,我已经进行了所有操作,但颜色没有改变。

这是我的代码:

   barChart = (BarChart) findViewById(R.id.bar_chart);
   List<BarEntry> entries = new ArrayList<BarEntry>();
   entries.add(new BarEntry(1.0f, 10.0f)); //tmp values

   BarDataSet dataSet = new BarDataSet(entries, "bars");
   dataSet.setColor(R.color.red); //color from resourses

   BarData barData = new BarData(dataSet);

   barChart.setData(barData);
   barChart.invalidate(); 

有趣的是,在我尝试更改条形图的颜色之前,它的颜色是蓝色的,但在尝试更改颜色后,它变成了灰色(无论应该是什么颜色)。我不明白为什么颜色没有改变。 我还尝试在BarDataSet类中覆盖getColor方法,但结果仍然是一样的——条形图是灰色的。
链接:Grey, but not red
4个回答

17

更改这一行内容,

dataSet.setColor(R.color.red); //resource id of a color
dataSet.setColor(getResources().getColor(R.color.red)); //resolved color
当您调用setColor 时,需要传入一个表示RGB三元组的整数。R.color.red不是RGB三元组,而是表示R.java中资源的整数。

有关资源 ID 和已解析颜色之间差异的更多信息,请参见此问题


谢谢!它完美地运行了,但为什么我要以这种方式编写呢?我的代码有什么不正确的地方吗?而且,Android Studio还说'getColor'方法已经过时了。我应该用什么来替代它呢? - Aleksandr Tukallo
3
жҲ‘еҸ‘зҺ°жҲ‘еә”иҜҘдҪҝз”ЁContextCompat.getColor()иҖҢдёҚжҳҜе·Іејғз”Ёзҡ„getResources().getColor()пјҢдҪҶ第дёҖдёӘй—®йўҳд»Қ然еӯҳеңЁгҖӮ - Aleksandr Tukallo

2
  BarDataSet dataSet = new BarDataSet(entries, "bars");
   dataSet.setColors(ColorTemplate.MATERIAL_COLORS);

1
如果您想设置颜色,可以创建一个颜色数组。然后将该数组设置为Bardataset。以下是示例。
int[] colors = {Color.rgb(153, 193, 12), Color.rgb(179, 130, 76)};

    Bardataset.setColors(colors);

我认为你应该按照以下顺序编写代码。请看下面:

      BarDataSet dataSet = new BarDataSet(entries, "bars");
      dataSet.setColor(Color.parseColor("#104E78"));
      BarData barData = new BarData(dataSet);

尝试一下。

0
我们可以通过以下方式改变颜色。
    bardataset.setColors(new int[]{getResources().getColor(R.color.red)});

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