堆积条形图:改变整个条形图的外观?

时间:2013-05-15 12:10:21

标签: java android achartengine

我在Android应用中使用achartengine来显示堆积条形图(类似于this)。我使用ChartFactory.getBarChartView来获取GraphicalView对象,然后将其放置在我的布局中。

我的目标是在用户触摸其中一个堆叠条形图时向用户提供触摸反馈。我打算通过更改某些UI属性(可能是颜色)来完成此操作。用户触摸的栏。但是,我想指定整个堆叠条。这与仅指定栏的选定部分相反。

从演示中获取SalesStackedBarChart示例,我想指定整个数据栏,例如,选择March(不仅仅是2008年3月的部分)。

我已经知道如何在onClickListener对象上设置GraphicalView并使用getCurrentSeriesAndPoint()方法。但是,使用这种方法,我只能在所选的所有条上指定相同的部分。例如,突出显示所有12个柱上的2008部分。

问题:

  

如何更改单个堆叠条中所有部分的外观?

这是我的代码。它按设计工作(即,将所有12个条上的选定部分设置为灰色),但这不是我想要的。

mGraph.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                SeriesSelection seriesSelection = mGraph.getCurrentSeriesAndPoint();
                if (seriesSelection == null) {
                    Toast.makeText(mContext, "No chart element was long pressed",
                            Toast.LENGTH_SHORT).show();
                    return false; // no chart element was long pressed, so let
                                  // something
                    // else handle the event
                } else {
                    SimpleSeriesRenderer renderer = mMultiRenderer.getSeriesRendererAt(seriesSelection.getSeriesIndex());

                    Toast.makeText(mContext, "Chart element in series index "
                            + seriesSelection.getSeriesIndex() + " data point index "
                            + seriesSelection.getPointIndex() + " was long pressed",
                            Toast.LENGTH_SHORT).show();
                    renderer.setColor(Color.LTGRAY);                      
                    return true; 
                }
            }
        });

1 个答案:

答案 0 :(得分:1)

设置系列的颜色将改变该系列中所有条形的颜色。

一个可能的解决方案是创建一个额外的系列,其中只包含您想要突出显示的栏。非常棘手。