2014-01-29 20 views
1

我正在創建一個應用程序,顯示用戶給出的輸入圖。該圖是使用某些庫在線性佈局上繪製的..我希望線性佈局在每次用戶單擊繪圖按鈕時重新繪製用戶請求的新功能。我嘗試過使用layout.invalidate(),但這不起作用在我app.please幫助..below是一小段代碼片段:我想在視圖上重繪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); 

是正確的嗎?對我來說,您看起來像將視圖寬度設置爲0.

接下來,您確定不想通過從佈局中刪除舊視圖來丟棄舊結果?

最後,當您添加或刪除子視圖時,佈局自動失效。