Выделение фрагмента круговой диаграммы при нажатии в AChartEngine

Я хочу выделить (изменить цвет) определенного фрагмента круговой диаграммы при нажатии пользователем. Я могу найти в примерах (код ниже), что можно показать индекс среза и точную точку. а как насчет перекрашивания среза?

mChartView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
          if (seriesSelection == null) {
            Toast
                .makeText(PieChartBuilder.this, "No chart element was clicked", Toast.LENGTH_SHORT)
                .show();
          } else {
            Toast.makeText(
                PieChartBuilder.this,
                "Chart element data point index " + seriesSelection.getPointIndex()
                    + " was clicked" + " point value=" + seriesSelection.getValue(),
                Toast.LENGTH_SHORT).show();
          }
        }
      });

person Abdelwahed    schedule 20.06.2012    source источник


Ответы (3)


Это сделает то, что вам нужно:

mRenderer.getSeriesRendererAt(seriesSelection.getPointIndex()).setColor(color);
mChartView.repaint();
person Dan D.    schedule 29.06.2012
comment
куда нам нужно добавить это? - person Goofy; 15.01.2013
comment
Рядом с кодом в вопросе. См. это: code.google.com/p/achartengine/source/browse/trunk/achartengine/ - person Dan D.; 15.01.2013

Код для onClick на графике:

Использовать этот:

mChartView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
          if (seriesSelection == null) {
            Toast.makeText(PieChartBuilder.this, "No chart element selected", Toast.LENGTH_SHORT)
                .show();
          } else {
            for (int i = 0; i < mSeries.getItemCount(); i++) {
              mRenderer.getSeriesRendererAt(i).setHighlighted(i == seriesSelection.getPointIndex());
            }
            mChartView.repaint();
            Toast.makeText(
                PieChartBuilder.this,
                "Chart data point index " + seriesSelection.getPointIndex() + " selected"
                    + " point value=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show();
          }
        }
      });
person Pratik Butani    schedule 14.03.2013

Вы также должны убедиться, что диаграмма кликабельна. Я провел довольно много времени, задаваясь вопросом, почему я не мог заставить его работать. линия

mRenderer.setClickEnabled(true);

должен быть включен

person KuriaNdungu    schedule 24.07.2014