你好我想在用户点击显示值的achartengine Point时显示一个toast。我试图使用toScreenPoint方法获取屏幕位置值,但是如果我平移屏幕(移动图表)之后它将给出错误的值,之后它给出正确的屏幕点并且我将此值设置为Toast。我的代码如下所示。
chart=new TimeChart(dataset, charthelper.getXYMultipleSeriesRenderer());
graphview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SeriesSelection ss=graphview.getCurrentSeriesAndPoint();
if (ss == null) {
} else {
double[] screenPoint = chart.toScreenPoint(new double[] {
ss.getXValue(),ss.getValue() },0);
toast_textview.setText(ss.getValue()+"");
Toast toast=new Toast(getApplicationContext());
toast.setGravity(Gravity.TOP|Gravity.LEFT, (int)screenPoint[0],(int)screenPoint[1]);
toast.setView(toast_layout);
toast.show();
}
}
});
container_layout.addView(graphview,0);
[UPDATE] 我用这种方式解决了它
/**
* set ontouch listener for double tap
*/
graphview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
x = event.getX();
y = event.getY();
detector.onTouchEvent(event);
detector.setIsLongpressEnabled(true);
return false;
}
});
graphview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SeriesSelection ss = graphview.getCurrentSeriesAndPoint();
if (ss == null) {
} else {
/**
* toast display only series of value which index is
* zero
*/
if (ss.getSeriesIndex() == 0) {
toast_textview.setText(ss.getValue() + "");
Toast toast = new Toast(getApplicationContext());
DecimalFormat formatter = new DecimalFormat("##.##");
toast_textview.setText(formatter.format(ss.getValue()) + "");
toast.setGravity(Gravity.TOP | Gravity.LEFT, (int) x,
(int) y);
toast.setView(toast_layout);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
}
}
}
});