2010-08-18 79 views
7

我有一個自定義視圖(TextView的擴展),我想動態添加到我的佈局(不希望將其包含在main.xml文件中)。動態添加視圖到活動佈局

本書說在我的java代碼中使用findViewById()獲取RelativeLayout,然後創建自定義視圖的新實例,然後在RelativeLayout上使用addView添加新視圖。

我沒有收到任何錯誤,但是當我點擊我的按鈕添加新視圖時,什麼都沒有發生(視圖沒有被添加)。我是否需要在自定義視圖上設置其他屬性(例如佈局寬度,佈局高度)以便顯示它?

編輯:添加代碼

// changed to an imageview as I thought it might be easier to see an image 
RelativeLayout rel = (RelativeLayout) findViewById(R.id.rellay); 
MyCustomImageView mciv = new MyCustomImageView(null); 
mciv.setId(5); 
LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
mciv.setLayoutParams(p); 
mciv.setImageResource(R.drawable.someImage); 
rel.Addview(mciv); 

回答

3

請發表您的代碼中添加視圖。 但是,您可能會忽略寬度和高度的參數。嘗試類似

LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT);  
txtView.setLayoutParams(p); 

或者你想要的寬度和高度。在xml佈局中,layout_width和layout_height也是必需的屬性。

+0

好的我將自定義視圖更改爲imageview,因爲我認爲在活動上看起來更容易。我編輯我的OP包括一些代碼...仍然沒有看到任何東西。由於它是一個相對視圖,我是否需要包含一些內容來告訴它將它放入AddView()方法的位置? – 2010-08-18 19:38:50

+0

在xml它會像android:layout_below或android:layout_toRightOf,但不知道它是否需要或如何把它放在java代碼adhoc中。 – 2010-08-18 19:42:28

+0

嗯...亞我知道xml位,但我希望這是以編程方式發生。我只是試圖把它放在不同的線程上,認爲這可能是問題(無法在同一線程上更新UI,但沒有修復它)。我很茫然。 – 2010-08-18 19:49:10