我无法在运行时向活动的主布局添加子布局。更准确地说,当我调用 setContentView(布局)或 layout.add(mySubLayout)时,我会得到一个空指针异常,其中布局由 findViewById(R.id)检索.idLay)即可。下面是xml代码。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/idLay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
tools:context=".TrainingActy" >
似乎无法修改静态创建的布局。但我看到堆栈溢出的答案似乎可能做我想要的,我从来没有在android的文档中读到没有关于不可能做到这一点。
答案 0 :(得分:1)
资源无法在运行时修改。但您可以使用inflater获取布局视图,然后将视图添加到该布局。
答案 1 :(得分:1)
完全可以在运行时修改布局,无论它是如何创建的。这是一个如何做到这一点的例子。我假设在此示例中,您发布的布局位于文件main.xml
中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewGroup main = (ViewGroup) findViewById(R.id.idLay);
TextView text = new TextView(this);
text.setText("This is a test!");
main.addView(text);
}
当然,这不会修改您的资源文件,所以当您下次对它进行充气时,您将不得不再次执行所有步骤。
答案 2 :(得分:0)
findViewById(id)返回一个View,而Layouts是一个Viewgroup。
我建议用你的布局写另一个XML。然后按照您的描述包含它:
mainLayout.add(R.layout.your_custom_layout);