Установка цветов среза пирога в MPAndroidChart

Мне нужно определить конкретные шестнадцатеричные значения для каждого среза в моей круговой диаграмме.

Я следую завики но метод, кажется, не работает дляPieDataSet

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

Эти ошибки показаны:

Cannot resolve symbol 'green1'

Expression expected  <-- At the 'Context'

Есть ли альтернативный способ установить цвет ломтика пирога? Кажется, это работает для линейных графиков, но не для круговых.

 David Rawson27 янв. 2017 г., 22:21

Ответы на вопрос(4)

ContextCompat.getColor(context, R.color.green1) вместоR.color.green1

пример кода вКотлин:

 pieDataSet.colors = mutableListOf(ContextCompat.getColor(context, R.color.greenGraphs),
                                   ContextCompat.getColor(context, R.color.orangeGraphs),
                                   ContextCompat.getColor(context, R.color.blueGraphs), 
                                   ContextCompat.getColor(context, R.color.purpleGraphs))

вы можете использовать правильные имена цветов из 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;
}
Решение Вопроса

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);
 viper14 февр. 2017 г., 12:40
Спасибо, отлично работает для меня. Я просто хочу знать, как установить цвет фона по умолчанию для набора данных. Как, например, если мне нужно показать только 1 данные в круговой диаграмме, я бы хотел установить цвет для этих 1 данных, а остальная часть будет иметь цвет по умолчанию.
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);
 Rahul Chandrabhan27 мар. 2018 г., 07:09
Можешь немного объяснить свой код?
 Harvin dutta27 мар. 2018 г., 13:52
final int [] MY_COLORS = {Цвет. RGB (0,255,255), цвет. RGB (65 105 225)}; ArrayList <Integer> colors = new ArrayList <Integer> (); для (int c: MY_COLORS) colors.add (c); dataSet.setColors (цвет); // dataSet.setColors (ColorTemplate.VORDIPLOM_COLORS); // data.setValueTextSize (13f); // data.setValueTextColor (Color.DKGRAY);

Ваш ответ на вопрос