2014-01-29 6 views
1

사용자가 입력 한 그래프를 표시하는 앱을 만들고 있습니다. 그래프는 일부 라이브러리를 사용하는 선형 레이아웃에 그려져 있습니다 .i 사용자가 그리기 버튼을 클릭 할 때마다 사용자가 요청한 새 함수를 선형 레이아웃으로 다시 그려야합니다. layout.invalidate()를 사용하여 시도했지만 작동하지 않습니다.보기에서 다시 그리기를 원합니다. Android 프로그래밍

bb.setOnClickListener(new OnClickListener() 
{ 
public void onClick(View v) 
    { 
     String text = ee.getText().toString(); // getting the user expression input 
     LinearLayout layout = (LinearLayout) findViewById(R.id.graph2); 
     layout.setVisibility(View.INVISIBLE); 

     Expression data = Expression.createExpression(text) ; 

     if(text == ""){ 
      Toast.makeText(getApplicationContext(), "please enter a valid equation", Toast.LENGTH_LONG).show(); 
      layout.setVisibility(View.INVISIBLE); 
      } 
     else 
      { 
       draw(data) ; 
       layout.setVisibility(View.VISIBLE); 
       layout.invalidate(); 
      }              
     } 
     }); 

public void draw(Expression x) 
    { 
     final GraphView graphing = new LineGraphView(this, "sketch"); 
     int num = 350; 
     GraphViewData[] array = new GraphViewData[num]; 
     double w=0; 
     for (int i=0; i<num; i++) { 
      w += 0.2; 
      array[i] = new GraphViewData(i, x.evaluate(w,0,0)); } 


     // add data 
     graphing.addSeries(new GraphViewSeries(array)); 
     // set view port, start=2, size=40 
     graphing.setViewPort(0, 120); 
     graphing.getGraphViewStyle().setNumHorizontalLabels(2); 
     graphing.setScrollable(true); 
     // optional - activate scaling/zooming 
     graphing.setScalable(true); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.graph2); 
     layout.addView(graphing); 
     layout.invalidate(); 
    } 

답변

0

첫째 :

graphing.setViewPort(0, 120); 

가 올바른지 내 app.please 도움말 ..below에 코드 snipet입니까? 내게보기 너비를 0으로 설정 한 것 같습니다.

다음으로, 레이아웃에서 이전보기를 제거하여 이전 결과를 삭제하지 않겠습니까?

마지막으로 레이아웃은 하위보기를 추가하거나 제거 할 때 자동으로 무효화됩니다.

관련 문제