是否可以动态地将视图添加到基于XML的布局?

时间:2011-05-15 06:53:25

标签: android

假设我有一个简单的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 个答案:

答案 0 :(得分:1)

如果您使用的是findViewById(),请不要调用setContentView(),然后该视图已经在您当前设置的内容中。

添加视图效果很好。所有布局XML都是对要创建和添加到层次结构的视图的描述。确保在添加视图时传递正确的布局参数 - 此处由于容器是LinearLayout,您需要LinearLayout.LayoutParams。

您没有说您的代码以何种方式“不成功”,因此很难进一步提供帮助。

您还可以使用hierarchyviewer查看视图层次结构中实际发生的情况。