2011-05-15 49 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

相关问题