使用此代码使用aChart Engine显示条形图...现在我想将点击或触摸事件添加到图表的单个栏...但是没有Onclick或Ontouch事件...可以任何人帮我设置Click listner到吧......
public class BarGraph {
public Intent getIntent(Context context) {
int y[] = { 25, 10, 15, 20 };
CategorySeries series = new CategorySeries("Bar1");
for (int i = 0; i < y.length; i++) {
series.add("Bar" + (i + 1), y[i]);
}
XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); // collection
// of
// series
// under
// one
// object.,there
// could
// any
dataSet.addSeries(series.toXYSeries()); // number of series
// customization of the chart
XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
// one series
renderer.setColor(Color.RED);
renderer.setDisplayChartValues(true);
renderer.setChartValuesSpacing((float) 5.5d);
renderer.setLineWidth((float) 10.5d);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // collection
// multiple
// values
// for
// one
// renderer
// or
// series
mRenderer.addSeriesRenderer(renderer);
mRenderer.setChartTitle("Demo Graph");
// mRenderer.setXTitle("xValues");
mRenderer.setYTitle("Rupee");
mRenderer.setZoomButtonsVisible(true);
mRenderer.setShowLegend(true);
mRenderer.setShowGridX(true); // this will show the grid in graph
mRenderer.setShowGridY(true);
// mRenderer.setAntialiasing(true);
mRenderer.setBarSpacing(.5); // adding spacing between the line or
// stacks
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.BLACK);
mRenderer.setXAxisMin(0);
// mRenderer.setYAxisMin(.5);
mRenderer.setXAxisMax(5);
mRenderer.setYAxisMax(50);
//
mRenderer.setXLabels(0);
mRenderer.addXTextLabel(1, "Income");
mRenderer.addXTextLabel(2, "Saving");
mRenderer.addXTextLabel(3, "Expenditure");
mRenderer.addXTextLabel(4, "NetIncome");
mRenderer.setPanEnabled(true, true);
mRenderer.setClickEnabled(true);
// mRenderer
// will fix the chart position
Intent intent = ChartFactory.getBarChartIntent(context, dat`enter code here`aSet,
mRenderer, Type.DEFAULT);
return intent;
}
}
要获得ClickListner,我已尝试使用以下代码....
ChartFactory.getBarChartView(context, dataSet, mRenderer,Type.DEFAULT).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("============view", "Onclick");
}
});
然后事件没有发生......
答案 0 :(得分:1)
刚出现同样的问题,所以我想我知道你在哪里。
你需要在你的onClick方法中使用这一行,它可以让你控制选定的bar或dataPoint(取决于图表的类型):
SeriesSelection seriesSelection = chartView.getCurrentSeriesAndPoint();
其中chartView是您的GraphicalView元素。
现在您已经从图表中选择了元素,并且您有机会根据自己的需要使用它。
好的做法是检查是否为空,这意味着您已经点击了图表上的空白区域。例如:
if (seriesSelection == null) {
// do something or not
} else {
// do something cool
}
您可以使用以下方法访问点击字段的数据:
seriesSelection.getSeriesIndex() // in case you have more than one series
seriesSelection.getPointIndex() // gets place in a series
seriesSelection.getValue() // gets value for Y axis
seriesSelection.getXValue() // gets value of X axis
希望这有帮助!