2011-12-05 46 views
2

我試圖在一個屏幕上顯示兩個圖形,但我無法。這裏是我在OnClick函數中顯示一個圖形的代碼:在一個屏幕中的兩個圖形

case R.id.graphs: 
      GraphicalView mChartView = new Niveau().execute(this); 
      LinearLayout layout = (LinearLayout) findViewById(R.id.graph); 
      layout.removeAllViews(); 
      layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      break; 

任何想法?

非常感謝!

+0

你面臨什麼問題?共享錯誤日誌 –

+0

有了這段代碼我沒有面臨任何問題,但如果,例如,我嘗試添加此行以便在一個屏幕上顯示兩個圖形: layout.addView(mChartView,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams 。包裝內容)); 當我執行它時,該應用會關閉!如何在一個屏幕上顯示多個圖形? – Lucia

+0

您不能添加兩次相同的視圖,您需要兩個具有不同ID的不同實例:請參閱我的答案 – Guillaume

回答

1
case R.id.graphs: 
     GraphicalView mChartView1 = new Niveau().execute(this); 
     GraphicalView mChartView2 = // another chartView creation 
     LinearLayout layout = (LinearLayout) findViewById(R.id.graph); 
     layout.removeAllViews(); 
     layout.addView(mChartView1, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     layout.addView(mChartView2, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     break; 

這應該工作。一定要對你的mChartView不同的ID - 如果你創建它們編程,而不是從XML佈局膨脹,則需要編程設置id太:

mChartView1.setId(1); 
mChartView2.setId(2); 

此外,RelativeLayout可能會爲您提供更多的定製期限的佈局和定位。然後你需要在你的佈局參數中設置相對位置:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.graph); 
.... 
RelativeLayout.LayoutParams paramsForChart2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
paramsForChart2.addRule(RelativeLayout.RIGHT_OF, mChartView1.getId()); 
layout.addView(mChartView2, paramsForChart2); 
+0

有了這個,我沒有錯誤,但我沒有看到屏幕上的兩個圖形。我只看到一個!多謝! – Lucia

+0

嘗試相對佈局,我編輯了我的答案 – Guillaume

+0

像這樣,我得到兩個圖形,一個在另一個之上,我可以放大和「玩」其中一個。其他看起來是靜態的!我試圖找到你給我的答案,但如果你有更多的想法... :-) thx – Lucia

1

在添加第二個佈局之前,您必須致電layout.removeAllViews();,以便您的佈局現在可以自由顯示其中的另一個佈局。所以嘗試先刪除,然後添加第二個佈局。

+0

以及如何同時顯示兩個圖形?這可能嗎?非常感謝! – Lucia

+0

如果您想同時顯示兩種佈局,則需要爲兩者創建單獨的容器。因爲同時兩個佈局不能重疊顯示。 –

相關問題