我在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;
}
}
});
答案 0 :(得分:1)
设置系列的颜色将改变该系列中所有条形的颜色。
一个可能的解决方案是创建一个额外的系列,其中只包含您想要突出显示的栏。非常棘手。