我正在使用achartengine。首次创建时,我禁用了触摸事件。但我想在运行时重新启用它们。这是我的代码:
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
private GraphicalView graphView;
public void setFreeStyle(boolean isFree) {
if (isFree) {
mRenderer.setClickEnabled(true);
mRenderer.setInScroll(true);
mRenderer.setPanEnabled(true);
graphView.repaint();
} else {
mRenderer.setClickEnabled(false);
mRenderer.setInScroll(false);
mRenderer.setPanEnabled(false);
graphView.repaint();
}
}
我认为我应该以某种方式更新我的GraphicalView。但我不知道怎么做。我使用了“graphView.repaint();”,但它似乎不起作用。
---- ----编辑
我认为通过这种方式重新激活触摸事件。但潘不是。我想重新启动平移。
答案 0 :(得分:2)
我解决了这个问题。我不知道为什么,但如果你使用" mRenderer.setPanEnabled(FALSE,FALSE); "在初始化中,您永远不能重新激活平移。所以我试着以不同的方式进行初始化:
XYMultipleSeriesRenderer mRenderer;
GraphicalView graphView;
public GraphicalView getView(Context context) {
... some initialization code ...
mRenderer.setPanEnabled(true, false); //first you should left x-axis pan enabled
graphView = ChartFactory.getTimeChartView(context, dataset, mRenderer,
"HH:mm:ss");
mRenderer.setPanEnabled(false,false); //After you created GraphicalView you can disable pan safely
return graphView;
}
重新启用/禁用pan的代码:
public void setFreeStyle(boolean isFree){
if (isFree) {
mRenderer.setPanEnabled(true, true);
graphView.repaint();
}else {
mRenderer.setPanEnabled(false,false);
graphView.repaint();
}
}
答案 1 :(得分:1)
尝试
修改强>
public void setFreeStyle(boolean isFree)
{
if(isFree)
{
view.setClickable(true);
mRen.setClickEnabled(true);
mRen.setPanEnabled(true, true);
mRen.setZoomEnabled(true, true);
view.repaint();
}
else
{
view.setClickable(false);
mRen.setClickEnabled(false);
mRen.setPanEnabled(false, false);
mRen.setZoomEnabled(false, false);
view.repaint();
}
}
和
view.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0)
{
System.out.println("LINE GRAPH CLICKED ###");
}
});