2012-06-21 28 views
1

有大量的SO問類似的問題,但後來也請花時間閱讀我的問題。如何在其中添加的FrameLayout和ImageViews編程?

我需要以編程方式創建一個UI,它將具有多個ImageView,它們都位於屏幕的不同位置並具有關聯的單擊事件(其遊戲應用程序)。我發現FrameLayout是合適的選擇,在那裏我可以設置自己的利潤,並將它放置在所需位置。

現在,我很困惑是否有FrameLayout爲每一個ImageView創建,或保持單一的FrameLayout和在其內添加所有ImageViews,但在不同的位置設置每個ImageView的

在任何的情況下,我怎麼能在它裏面添加的FrameLayout和ImageView的,編程方式,也可以設置它的利潤率,使得它可以放在任何地方在屏幕上。

請注意,我的主畫布,這將攜帶所有這些ImageViews有背景,畫布是通過XML一個LinearLayout集,所以我onCreate()已經setContentView(R.layout.game_canvas);,我會使用addContentView()添加額外的意見,但這方法也接受LayoutParams對象作爲第二個參數,所以當我使用此方法添加我的FrameLayouts時,我應該爲此設置什麼?

我的問題可能會讓人困惑,所以請讓我知道是否需要詳細說明。

回答

5

FrameLayouts被設計成只持有一種觀點認爲,所以這是不是真的合適的選擇。

使用RelativeLayout的可以保留所有ImageViews的。您可以通過在其LayoutParams中設置邊距來定位每個ImageView。

E.g.下面的代碼將放置一個ImageView的座標50,50:

RelativeLayout imgLayout = new RelativeLayout(this); 

ImageView iv = new ImageView(this); 
iv.setImageResource(R.drawable.an_image); 

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

lp.setMargins(50, 50, 0, 0); 
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

imgLayout.addView(iv, lp); 

然後,您可以使用其addView()方法,該RelativeLayout的添加到您的主要LinearLayout中。

+0

「RelativeLayout」會允許其子ImageView在幾個像素上相互重疊(想想紙牌堆疊在一起)? – Kushal

+2

是的,他們這樣做。訂單由您添加的訂單決定。 – nmw

+0

@nmw如何使用此代碼添加片段。就像你正在加載圖片一樣,我可以在這段代碼中替換一個片段嗎? – Andrain

相關問題