문제

I'm using achartengine. When first created I am disabling touch events. But I want to re enable them in runtime. Here is my code:

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();
        }
}

I think that I should update my GraphicalView somehow. But I couln't find how. I used "graphView.repaint();", but it doesn't seems to work.

----Edit----

I think touch events are re activating by this way. But pan isn't. I want to re activate panning.

도움이 되었습니까?

해결책

I solved the problem. I don't know why but if you use " mRenderer.setPanEnabled(false,false); " in initialization, you can never re activate panning. So I tried to initialize differently:

    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;

}

And the code that re enables/disables pan :

public void setFreeStyle(boolean isFree){
    if (isFree) {
        mRenderer.setPanEnabled(true, true);
        graphView.repaint();
    }else {
        mRenderer.setPanEnabled(false,false);
        graphView.repaint();
    }
}

다른 팁

Try

Edit:

  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();
        }
    }

and

view.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0)
            {
                System.out.println("LINE GRAPH CLICKED ###");

            }
        });
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top