2011-05-15 72 views
1

比方說,我有一個簡單的XML佈局如下列:是否可以將視圖動態添加到基於XML的佈局?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/my_container" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <LinearLayout android:id="@+id/leftContainer" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Col A - Text 1" 
     /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/rightContainer" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Col B - Text 1" 
     /> 
    </LinearLayout> 
</LinearLayout> 

然後我想一個TextView添加到rightContainer的LinearLayout。我目前這樣做,但不成功:

LinearLayout container = (LinearLayout) findViewById(R.id.rightContainer); 
TextView textToAdd = new TextView(this); 
textToAdd.setText("Col B - Text 2"); 
container.addView(textToAdd); 

我已經看過LayoutInflater,但我不知道如何在這裏使用它。任何幫助將不勝感激,謝謝!如果我嘗試調用setContentView(容器),我收到強制關閉錯誤。

回答

1

如果您使用findViewById(),則不要調用setContentView(),那麼該視圖已經在您當前設置的內容中。

添加視圖正常工作。所有佈局XML都是對創建和添加到層次結構的視圖的描述。確保在添加視圖時傳遞正確的佈局參數 - 因爲容器是LinearLayout,所以您需要LinearLayout.LayoutParams。

你不會說你的代碼以什麼方式「不成功」,所以很難進一步提供幫助。

此外,您可以使用hierarchyviewer來查看您的視圖層次結構中實際發生了什麼。

+0

呃,原來是這麼簡單!如果失敗,我的意思是我的內容不可見。但是,這是因爲我使用了fill_parent,它佔用了所有可見區域。謝謝hackbod。 – jeffers102 2011-05-15 07:23:39

相關問題