2016-12-08 11 views
1

バーの特定の色をBarChartに設定したい場合は、MPAndroidChartから設定します。私はドキュメントに従ってすべてを行いますが、色は変わりません。 は、ここに私のコードです:MPAndroidChartでBarChartの色を設定できません

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メソッドをオーバーライドしようとしましたが、結果は同じです - バーはグレーです。

dataSet.setColor(getResources().getColor(R.color.red)); //resolved color 

、へ

Grey, but not red

答えて

2

変更このライン、

dataSet.setColor(R.color.red); //resource id of a color 

あなたはトリプルRGBを表す整数で渡す必要がありsetColor呼び出します。 R.color.redはRGBトリプルではなく、R.javaのリソースを表す整数です。

リソースIDと解決済み色の違いについては、this questionを参照してください。

+0

ありがとうございました!それは完璧に動作しますが、なぜこのように書くべきですか?私のコードでは何が正しくありませんでしたか?さらに、Android Studioでは、「getColor」メソッドは推奨されなくなりました。私はそれの代わりに何を使うべきですか? –

+0

廃止予定の 'getResourses()。getColor()'の代わりに 'ContextCompat.getColor()'を使うべきですが、最初の質問はまだ残っていることが分かりました。 –

1
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); 

お試しください。

関連する問題