2012-06-19 49 views
0

我正在Android 2.1中開發一個應用程序,它需要根據按鈕點擊動態加載視圖。這是我的活動的粗略佈局。Android:在Android 2.1中動態加載視圖的最佳方式

enter image description here

說上點擊按鈕1,它應該顯示的ImageView,並點擊按鈕2,它應該顯示列表視圖,爲BUTTON3 - 的LinearLayout按鈕和圖像等。所有視圖只能在提供的白色空間中加載。

我認爲要遵循的方法是「膨脹佈局」。但在單擊另一個按鈕時,舊的充氣佈局應該被移除,並且新的充氣佈局應該是可見的。

有沒有更好的方法來實現這個?如果膨脹佈局是唯一更好的方法,我如何刪除舊的膨脹佈局並加載新的膨脹佈局。

+0

您可以使用預定義佈局並根據需要設置可見性。 –

+0

您的意思是將所有視圖寫入單個佈局並將所需視圖的可見性設置爲?其實我有很多按鈕,視圖也是如此。加載所有視圖,但只顯示1個視圖可能會減慢Android系統。 –

+0

是的,但如果有很多的觀點,然後使用膨脹佈局,下一次當你膨脹佈局,然後設置可見性INVISIBLE爲已創建的佈局 –

回答

3

可以使用ViewFlipper持有三種佈局和簡單的調用showNext()setDisplayedChild(),以確定其中示出了佈局。

+0

在這裏提供的所有答案,似乎ViewFlipper是我的最佳解決方案,但是viewflipper支持android 2.1? –

+0

根據文檔,ViewFlipper自API級別1開始可用,所以是的。 http://developer.android.com/reference/android/widget/ViewFlipper.html – Magicode

0

當您的佈局比一個ImageView左右時更復雜時,充氣效果很好。在這種情況下,您應該動態創建一個ImageView並將其添加到「空白區域」(它應該是一些ViewGroup(即RelativeView))。在這種情況下:

mRelativeView.removeAllViews(); 
ImageView newView = new ImageView(mContext); 
newView.setImageResource(R.drawable.someImage); 
mRelativeView.addView(newView); 

具有更復雜的佈局時,與LayoutInflater做到這一點(但要記住膨脹是很慢):

mRelativeView.removeAllViews(); 
View newView = LayoutInflater.from(mContext).inflate(R.layout.some_layout, null); 
mRelativeView.addView(newView); 

在上面的例子中mContext可以是例如當前活動。

0

這聽起來像你正在試圖做的非常相似TabHost東西,嘗試閱讀TabHost這裏: http://developer.android.com/reference/android/widget/TabHost.html

而且在這裏看到教程: http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

我覺得你最好關閉使用像這樣的內置組件,然後自己實現類似的東西

+0

我知道關於TabHost,但我認爲需要單獨的活動爲每個選項卡創建權?我只是想以簡單的方式加載一些視圖。 –

+0

不,從上面的鏈接可以看出:「您可以通過以下兩種方式之一實現標籤內容:使用標籤在同一活動中交換視圖,或者使用標籤在完全獨立的活動之間切換。」 – marmor

相關問題