我需要为我的程序添加与用户平移/缩放GraphView相关的行为。我正在尝试注册要通知的动作事件,所以我可以做一些事情,因为用户通过触摸操作图形。
我尝试重写onTouchEvent并在LineGraph的子类中实现OnTouchLIstener。我也尝试在Fragment / View中执行此操作,我在其中放置GraphView。但是,我的方法永远不会被调用,但图表允许像以前一样平移/缩放。
e.g:
public CustomLineGraphView(Context context, String title) {
super(context, title);
this.setOnTouchListener(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.w("clg", "onTouchEvent()");
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.w("clg", "onTouch()");
return false;
}
答案 0 :(得分:0)
您需要访问View
使用的基础GraphView
。
假设您有一个名为m_graphView的GraphView对象,请执行以下操作。将onTouchListener附加到每个底层子节点可能是最安全的,因为在未来实现GraphView更改。
// attach OnTouchListener to the inner view that receives touch events for pan/zoom.
int childCount = m_graphView.getChildCount();
for(int index = 0; index < childCount; index++) {
m_graphView.getChildAt(index).setOnTouchListener(new GraphTouchListener());
}
请务必在onTouch()中返回false,以便pan / zoom的基类行为仍然有效。
private class GraphTouchListener implements View.OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
// do whatever custom behavior you want here
// return false so that the base onTouch event (pan, zoom) can still execute.
return false;
}
}