1

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

我的目标是在用户触摸其中一个堆叠条时向用户提供触摸反馈。我打算通过更改用户触摸的栏的一些 UI 属性(可能是颜色)来做到这一点。但是,我想将整个堆叠条指定为已触摸。这与仅指定栏的选定部分相反。

以演示中的 SalesStackedBarChart 示例为例,我想将整个条形图指定为选定的 3 月(不仅仅是 2008 年 3 月的部分)。

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

问题:

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

这是我的代码。它按设计工作(即,将所有 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; 
                }
            }
        });
4

1 回答 1

1

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

一种可能的解决方案是创建一个额外的系列,其中仅包含要突出显示为选中的条。相当棘手。

于 2013-05-15T14:39:13.810 回答